Ici, nos Ressources


Comment résoudre l’erreur fatale lors des migrations de la base de données sur Laravel 5.4 ?

 Rédigé le mercredi février 2017.

Par défaut, Laravel 5.4 utilise la norme utf8mb4, incluant le support pour l'insert des émoticônes (emojis en anglais) au sein de vos bases de données. 3 cas se présentent :

1 - Vous migrez votre application de la version 5.3 de Laravel vers la version 5.4 : vous n'avez rien à faire.

2 - Vous utilisez déjà les versions MySQL v5.7.7 et supérieures : là aussi, vous n'avez rien à faire.

3 – Par contre, vous installez la nouvelle version 5.4 de Laravel sous MariaDB ou sous une version insuffisante de MySQL (inférieure à la verion v5.7.7), vous obtenez cette erreur lors des migrations de la base de données :

[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 users add unique users_email_unique(email))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long;
max key length is 767 bytes

 

Afin de supprimer l'erreur, vous devez éditer le fichier AppServiceProvider.php (votrapplication/app/Providers/AppServiceProvider.php) et rajouter cette classe et sa façade :

use Illuminate\Support\Facades\Schema;

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

Une fois enregistré, tout devrait fonctionner comme avant. A bientôt pour d'autres aventures Laravel.