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:
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!