Aller au contenu
Patrick Junod

← Blog

Corriger l'erreur Syntax error or access violation: 1071 La clé est trop longue. Longueur maximale: 1000

· 1 min · Programmation, Laravel

En bref

  • L'erreur 1071 survient lors des migrations Laravel avec MySQL antérieur à 5.7.7, à cause du jeu de caractères utf8mb4.
  • Solution recommandée : mettre MySQL à jour.
  • Alternative : définir Schema::defaultStringLength(191) dans la méthode boot() d'AppServiceProvider, puis vider la base avant de relancer les migrations.

Ce soucis n'affecte que les nouvelles applications avec une version de MySQL inférieure à v5.7.7.

Vous allez rencontrer cette erreur lorsque vous essayez d'exécuter des migrations :

[Illuminate\Database\QueryException]   
SQLSTATE[42000]: Syntax error or access violation: 1071 La clé est trop longue. Longueur maximale: 1000 (SQL: alter table `users` add unique `users_email_unique`(`email`))

Pour corriger ce problème, vous avez deux solutions: Mettre MySQL à jour (recommandé) ou modifier votre fichier AppServiceProvider.php et définir une longueur de chaîne par défaut dans la méthode boot:

app/Providers/AppServiceProvider.php

// Inclure la facade "Schema"
use Illuminate\Support\Facades\Schema;

// dans la méthode boot(), inclure la ligne suivante
public function boot()
{
    Schema::defaultStringLength(191);
}

Après cela, tout devrait fonctionner normalement.

N'oubliez pas de vider votre base de donnée avant de refaire la migration, sans quoi vous vous retrouverez avec une erreur.

Écrit par Patrick Junod, développeur fullstack à Neuchâtel. Une question ou une remarque : contact@patrickjunod.dev