Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich den MySQL-Fehler Nr. 1071: Der angegebene Schlüssel war zu lang?

Warum erhalte ich den MySQL-Fehler Nr. 1071: Der angegebene Schlüssel war zu lang?

Mary-Kate Olsen
Freigeben: 2024-12-28 07:41:42
Original
388 Leute haben es durchsucht

Why Am I Getting MySQL Error #1071: Specified Key Was Too Long?

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
Nach dem Login kopieren

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:

  • Begrenzen Sie die Länge von VARCHAR-Spalten: Durch das Festlegen einer Untergrenze für die VARCHAR-Länge wird sichergestellt, dass die Indexgröße unter dem bleibt Maximum.
  • Indizieren Sie nur einen Teil der Spalte: Geben Sie in der Indexdefinition nur eine Teilmenge der Zeichen jeder Spalte an, z. B. Spalte1(15) und Spalte2(200). Dies reduziert die Gesamtindexgröße und ermöglicht die Erstellung des Index.
  • Erwägen Sie eine Überprüfung des Datenmodells: Entdecken Sie alternative Möglichkeiten zur Implementierung von Geschäftsregeln, ohne die Schlüssellängenbeschränkung zu überschreiten. Dies kann die Aufteilung von Daten in mehrere Spalten oder die Einführung zusätzlicher Tabellen beinhalten.

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!

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