Datenbank Migrationen

Laravel Error: 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.

Andreas Pabst

Andreas Pabst hilft als langjähriger IT Trainer, Fachkräftetrainer und Führungskräftetrainer europaweit Firmen und Teams dabei gemeinsam mehr zu erreichen. Profitieren Sie von didaktischen Fähigkeiten als Hochschuldozent gleichermaßen wie von seiner Tätigkeit als Speaker und somit äußerst unterhaltsamen Seminaren.

Share
Veröffentlicht von
Andreas Pabst

Neue Beiträge

Wie erstelle ich eine Laravel Middleware: Schritt für Schritt Anleitung

Voraussetzung: Du musst ein Laravel Projekt erstellt haben und dich im Projektordner befinden. Um ein…

1 Jahr ago

Wie erstelle ich einen Laravel Job in der Queue?

Um eine Laravel-Queue zu erstellen, die eine E-Mail verschickt, müssen zunächst einmal alle Anforderungen für…

1 Jahr ago

Laravel Anfänger und Einsteiger Tutorial

Dieses Tutorial soll den perfekten und einfachen Einstieg in die Welt des Laravel Frameworks bieten.…

1 Jahr ago

Laravel Eloquent Performance Tipp

Einfache Konventionen Ich bin ein absoluter Laravel Fan, das vorneweg. Jedoch gibt es so gewisse…

3 Jahren ago

Laravel – Please provide a valid cache path

Neue Installation Laravel wirft häufig nach Installationen auf einem neuen System, ob Entwicklungsserver, Lokal oder…

4 Jahren ago

Model Beziehungen – Laravel Model Relationships

Laravel bietet verschiedene Möglichkeiten an, Beziehungen von Models abzubilden. Übersicht über die drei wichtigsten Beziehungen…

4 Jahren ago

This website uses cookies.