Specified key was too long error

~ 0 min
2020-01-30 15:17

Si en lançant tes migrations tu tombes sur une erreur de ce style :

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table <code>userscode> add unique <code>users_email_uniquecode>(<code>emailcode>))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Pourquoi cette erreur ?

Laravel 5.4 a introduit un changement dans le jeu de caractères par défaut des bases de données. Il utilise à présent le jeu de caractères utf8mb4 qui supporte le stockage des emojis. Cela affecte uniquement les nouvelles applications et aussi longtemps que tu utiliseras une base de données mySQL v5.7.7 et supérieure, tu ne rencontreras pas ce souci.

Cela signifie premièrement que tu utilises une version un peu âgée de MySQL ou de MariaDB.

Deuxièmement la solution pour fixer cela est très simple.

Il te suffit d'éditer ton fichier appServiceProvider.php et d'y ajouter le code suivant :

use Illuminate\Support\Facades\Schema; 

public function boot()
{
    Schema::defaultStringLength(191);
}

Après cela ta migration devrait passer sans problème.

Fichiers attachés ::

    Moyenne des notes : 0 (0 Vote)

    Vous pouvez commenter cet article