MySQL-Fehler Nr. 1071: Einschränkungen der Schlüssellänge verstehen
Beim Versuch, einer Tabelle mit bestimmten Spalten (Spalte1 und Spalte2) einen eindeutigen Index hinzuzufügen ), können Benutzer auf den folgenden Fehler stoßen:
#1071 - Specified key was too long; max key length is 767 bytes
Obwohl es zunächst den Anschein hat, dass die kombinierte Länge von Spalte1 (20) und Spalte2 (500) innerhalb der maximalen Schlüssellänge von 767 Bytes liegen, liegt die eigentliche Erklärung im Verständnis der Präfixindexbeschränkung von MySQL.
In MySQL-Versionen vor 5.7 hatten InnoDB-Tabellen eine Präfixindexbeschränkung von 767 Bytes, während MyISAM-Tabellen eine größere Grenze von 1.000 Bytes hatten. Dies bedeutet, dass die maximale Anzahl der von einem Index verwendeten Bytes auf dem Anfangsteil der im Index enthaltenen Spalte(n) basiert.
Im gegebenen Beispiel sind sowohl Spalte1 als auch Spalte2 VARCHAR(x)-Spalten , die Zeichenfolgen variabler Länge speichern. Der Fehler tritt auf, weil MySQL die gesamte Länge der Spalte als Teil des Index betrachtet und nicht nur die tatsächlich gespeicherten Daten. Selbst wenn die tatsächlichen Daten in Spalte 1 und Spalte 2 kürzer als die zugewiesene Gesamtlänge sind, überschreitet die Indexgröße daher die maximale Grenze.
Um diesen Fehler zu vermeiden, haben Benutzer mehrere Möglichkeiten:
Um MySQL-Schlüssellängenfehler zu vermeiden, ist es wichtig, die Auswirkungen der Spaltenlänge auf die Indexgrößen zu verstehen. Durch die sorgfältige Verwaltung von Spaltengrößen und Indexdefinitionen können Benutzer Indizes erfolgreich implementieren und die Datenintegrität aufrechterhalten, ohne die Datenbankbeschränkungen zu überschreiten.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich den MySQL-Fehler Nr. 1071: Der angegebene Schlüssel war zu lang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!