Laravel Fehler: Specified key was too long error
Dies ist ein häufiger Fehler, vor allem wenn eine Laravel Anwendung neu aufgesetzt wird und zum ersten Mal eine Migration ausgeführt wird. Hier zeigen wir dir, wie Du diesen Fehler lösen kannst.
Woher kommt der Fehler?
Laravel hat in der Version 5.4 eine Veränderung in dem Standard Charset der Datenbanken gemacht. Dieses ist jetzt utf8mb4, damit auch etwa Emojis gesichert werden können. This only affects new applications and as long as you are running MySQL v5.7.7 and higher you do not need to do anything. Für alle, welche MariaDB oder MySQL in einer Version niedriger als v5.7.7 verwenden, könnte der folgende Fehler bei Migrationen auftreten:
[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
Fehler beheben
Um den Fehler zu beheben, genügt es eine kleine Änderung in der AppServiceProvider.php
durchzuführen und innerhalb der boot()
Funktion eine Standard Zeichenlänge hinzuzufügen
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
Danach sollte alles wie gehabt funktionieren. Achtung: es kann sein, dass die Migration nicht erneut durchgeführt werden kann, da Teile der Tabelle bereits angelegt wurden. php artisan migrate:fresh
macht somit alle Migrationen rückgängig - bedeutet komplett Datenverlust! php artisan migrate:rollback
macht den letzten Schritt rückgängig.
Inhaltsverzeichnis
Jetzt durchstarten
Zum Newsletter anmelden
Bleibe informiert und erhalte nützliche Informationen über Marketing und produktbezogene Inhalte kostenlos in deinem Posteingang.
We care about the protection of your data. Read our Privacy Policy.
Mehr Beiträge auf unserem Blog
Hier findest Du weitere Beiträge