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.