Problembeschreibung:
Wann Beim Versuch, die folgende Abfrage auszuführen:
CREATE TABLE IF NOT EXISTS `pds_core_menu_items` ( ... KEY `index` (`parent_menu_id`,`menu_link`,`plugin`,`alias`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Es ist ein Fehler aufgetreten: „#1071 – Der angegebene Schlüssel war zu lang; die maximale Schlüssellänge beträgt 1000 Bytes“.
Erklärung:
Dieser Fehler tritt auf, wenn die kombinierte Länge der Spalten in der Der Index überschreitet die maximal zulässige Schlüssellänge von 1000 Byte. In diesem Fall enthält der für die Tabelle pds_core_menu_items erstellte Index vier Spalten: parent_menu_id, menu_link, Plugin und Alias, die jeweils eine Länge von 32, 255, 255 und 255 Byte haben.
Lösung :
Um dieses Problem zu beheben, reduzieren Sie die Größe von den Index, indem Sie kürzere Spaltenlängen verwenden oder die Anzahl der im Index enthaltenen Spalten begrenzen.
Empfohlener Ansatz:
Der empfohlene Ansatz besteht darin, zur Optimierung Präfixindizes zu verwenden Indexgröße und Leistung. Bei Präfixindizes werden nur die ersten paar Zeichen einer Zeichenfolgenspalte indiziert. Dieser Ansatz kann die Indexlänge erheblich reduzieren.
Zum Beispiel erstellt die folgende modifizierte Abfrage einen Präfixindex für jede der vier Spalten:
CREATE TABLE IF NOT EXISTS `pds_core_menu_items` ( ... KEY `index` (`parent_menu_id`,`menu_link`(50),`plugin`(50),`alias`(50)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Zusätzlicher Hinweis:
Darüber hinaus ist zu beachten, dass die Datentypen INT(1) und INT(32) in der Abfrage keinen Einfluss auf die Speichergröße haben bzw. Wertebereich der Spalten. INT verwendet immer 4 Byte Speicher und erlaubt Werte von -2147483648 bis 2147483647. Das numerische Argument kann das Auffüllen von Werten während der Anzeige beeinflussen, was nicht relevant ist, es sei denn, ZEROFILL wird verwendet.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL „Angegebener Schlüssel war zu lang; maximale Schlüssellänge beträgt 1000 Bytes' zurück und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!