Heim >Datenbank >MySQL-Tutorial >Wie behebt man einen Laravel-Migrationsfehler: Die Länge des eindeutigen Schlüssels wurde überschritten?

Wie behebt man einen Laravel-Migrationsfehler: Die Länge des eindeutigen Schlüssels wurde überschritten?

Linda Hamilton
Linda HamiltonOriginal
2024-12-01 16:31:10276Durchsuche

How to Fix Laravel Migration Error: Unique Key Length Exceeded?

Fehlerbehebung beim Laravel-Migrationsfehler: Länge des eindeutigen Schlüssels überschritten

Beim Versuch, einen eindeutigen Schlüssel für eine E-Mail-Spalte in Laravel zu erstellen, kann Folgendes auftreten: der folgende Fehler:

[IlluminateDatabaseQueryException] SQLSTATE[42000]: Syntaxfehler oder Zugriffsverletzung: 1071 Der angegebene Schlüssel war zu lang; Die maximale Schlüssellänge beträgt 767 Bytes

Obwohl Sie den Indexschlüssel als zweiten Parameter für die Methode unique() angegeben haben, bleibt der Fehler bestehen. Dies liegt wahrscheinlich an der Länge der E-Mail-Spalte.

Lösung für Laravel-Versionen vor 5.4:

Um diesen Fehler zu beheben, reduzieren Sie die Länge der E-Mail-Spalte . Die Standardlänge beträgt 250 Zeichen, also ändern Sie die folgende Zeile in Ihrer Migration:

$table->string('email', 250);

Alternativ können Sie die Standardlänge verwenden:

$table->string('email');

Lösung für Laravel 5.4 und höher:

In Laravel 5.4 können Sie eine Standard-String-Länge festlegen, um dies zu vermeiden Fehler. Fügen Sie in Ihrer AppServiceProvider.php-Datei den folgenden Code zur Startmethode hinzu:

use Illuminate\Database\Schema\Builder;

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

Dadurch wird sichergestellt, dass alle Zeichenfolgenspalten eine maximale Länge von 191 Zeichen verwenden.

Das obige ist der detaillierte Inhalt vonWie behebt man einen Laravel-Migrationsfehler: Die Länge des eindeutigen Schlüssels wurde überschritten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn