Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich bei Laravel-Migrationen die Fehlermeldung „Eindeutiger Schlüssel ist zu lang“?

Warum erhalte ich bei Laravel-Migrationen die Fehlermeldung „Eindeutiger Schlüssel ist zu lang“?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 04:39:30861Durchsuche

Why Am I Getting a

Fehlerbehebung bei Laravel-Migrationsfehlern: „Eindeutiger Schlüssel ist zu lang“

Beim Versuch, eine Benutzertabelle in Laravel zu migrieren, stoßen Sie möglicherweise auf das Problem Fehler: „[IlluminateDatabaseQueryException] ... Der angegebene Schlüssel war zu lang; die maximale Schlüssellänge beträgt 767 Byte.“ Dieser Fehler tritt auf, wenn der von Ihnen angegebene eindeutige Schlüssel die maximal zulässige Länge überschreitet.

Verstehen des Problems

Die Standardzeichenfolgenlänge in Laravel für Spalten wie E-Mail beträgt 255 Charaktere. Wenn Sie versuchen, einen eindeutigen Schlüssel für eine Spalte mit einer längeren Zeichenfolge zu erstellen (in diesem Fall 320 Zeichen für die E-Mail-Spalte), schlägt die Migration fehl.

Behebung des Fehlers

  1. Reduzieren Sie die Länge der E-Mail-Zeichenfolge:Geben Sie eine kürzere Länge für die E-Mail-Spalte in Ihrer Migration an:
<code class="php">$table->string('email', 250);</code>
  1. Verwenden Standard-Stringlänge:Verwenden Sie die Standard-Stringlänge für die E-Mail-Spalte:
<code class="php">$table->string('email');</code>
  1. Standard-Stringlänge in AppServiceProvider festlegen (Laravel 5.4 und höher):

Legen Sie in der Datei AppServiceProvider.php in der Startmethode die Standardzeichenfolgenlänge für alle Migrationen fest:

<code class="php">use Illuminate\Database\Schema\Builder;

public function boot()
{
    Builder::defaultStringLength(191);
}</code>

Das obige ist der detaillierte Inhalt vonWarum erhalte ich bei Laravel-Migrationen die Fehlermeldung „Eindeutiger Schlüssel ist zu lang“?. 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