Heim > Datenbank > MySQL-Tutorial > Warum gibt MySQL den Fehler Nr. 1071 aus: „Der angegebene Schlüssel war zu lang'?

Warum gibt MySQL den Fehler Nr. 1071 aus: „Der angegebene Schlüssel war zu lang'?

Patricia Arquette
Freigeben: 2024-12-14 14:59:10
Original
537 Leute haben es durchsucht

Why Does MySQL Throw Error #1071:

MySQL-Fehler Nr. 1071: Eintauchen in Schlüssellängenbeschränkungen

Beim Versuch, eine MySQL-Tabelle durch Hinzufügen einer eindeutigen Schlüsselbeschränkung für zwei VARCHAR zu ändern Spalten erscheint eine ziemlich verwirrende Fehlermeldung: „#1071 – Der angegebene Schlüssel war zu lang; die maximale Schlüssellänge beträgt 767 Bytes“. Obwohl die Größe beider Spalten deutlich innerhalb der 767-Byte-Grenze zu liegen scheint, erfordert das Verständnis dieses Fehlers einen tieferen Einblick in die Schlüssellängenbeschränkungen von MySQL.

Überarbeitung der Schlüssellängenbeschränkungen

Die maximale Länge für einen Schlüssel in MySQL Version 5.6 und früher beträgt tatsächlich 767 Byte für InnoDB-Tabellen und 1.000 Byte für MyISAM-Tabellen. In MySQL-Version 5.7 und höher wurde diese Grenze jedoch auf viel größere 3072 Bytes erweitert.

VARCHAR-Speicher dekodieren

Während der VARCHAR-Datentyp ein Maximum vorschlägt Bei einer Speicherung von 20 und 500 Bytes für Ihre jeweiligen Spalten berücksichtigt diese Berechnung nicht die Zeichenkodierung. Wenn Ihre VARCHAR-Felder im utf8mb4-Format codiert sind, wird die maximale Länge des Indexpräfixes effektiv um ein Viertel reduziert, was zu nur 191 Bytes (767/4) führt.

Eine Problemumgehung finden

Um dieses Problem zu beheben, sollten Sie eine der folgenden Maßnahmen implementieren Strategien:

  • Spaltengrößen reduzieren:Begrenzen Sie die maximale Länge Ihrer VARCHAR-Felder, um die Indexpräfixlängenbeschränkung zu erfüllen.
  • Teilen Sie die Spalte: Nutzen Sie nur einen Teil der Spalte für die Indizierung und reduzieren Sie dadurch die Schlüssellänge. Zum Beispiel: ALTER TABLE mytable ADD UNIQUE ( Column1(15), Column2(200) );
  • Datenmodell überprüfen: Bewerten Sie Ihr Tabellendesign neu und überlegen Sie, ob es alternative Ansätze dafür gibt kann diese MySQL-Einschränkung vermeiden.

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL den Fehler Nr. 1071 aus: „Der angegebene Schlüssel war zu lang'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage