< Blog posts overview

Laravel Fehler: Specified key was too long error

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.

Laravel Fehler: Specified key was too long error

Jetzt durchstarten

Mit unseren Schulungen noch tiefer in das Thema einsteigen und mehr Erfolg in der Umsetzung haben

Sign up for our newsletter

Be informed and get useful information about marketing and product related content to linkrex in your inbox for free.

E-Mail-Newsletter abonnieren

Erhalte stets die neuesten Informationen über Seminare-IT kostenfrei in deinem Postfach.

We care about the protection of your data. Read our Privacy Policy.