Beim Erstellen einer MySQL-Tabelle mit einem zusammengesetzten Index können Benutzer auf Folgendes stoßen: Fehler „Angegebener Schlüssel war zu lang; maximale Schlüssellänge beträgt 1000 Bytes“. Dieser Fehler weist darauf hin, dass die Gesamtlänge der indizierten Spalten die maximal zulässige Speichergröße von 1000 Byte überschreitet.
Das Problem im bereitgestellten Codeausschnitt liegt in der übermäßigen Länge des zusammengesetzten Indexindex:
KEY `index` (`parent_menu_id`,`menu_link`,`plugin`,`alias`)
Um diesen Fehler zu beheben, beachten Sie Folgendes:
1. Indexlänge optimieren:
KEY `index` (`parent_menu_id`,`menu_link`(50),`plugin`(50),`alias`(50))
2. Bestimmen Sie die optimale Präfixlänge:
Verwenden Sie die folgende Abfrage, um die optimale Präfixlänge für eine bestimmte Spalte zu bestimmen:
SELECT ROUND(SUM(LENGTH(`menu_link`)<10)*100/COUNT(`menu_link`),2) AS pct_length_10, ROUND(SUM(LENGTH(`menu_link`)<20)*100/COUNT(`menu_link`),2) AS pct_length_20, ROUND(SUM(LENGTH(`menu_link`)<50)*100/COUNT(`menu_link`),2) AS pct_length_50, ROUND(SUM(LENGTH(`menu_link`)<100)*100/COUNT(`menu_link`),2) AS pct_length_100 FROM `pds_core_menu_items`;
Zum Beispiel, wenn die Abfrage Folgendes zurückgibt:
+---------------+---------------+---------------+----------------+ | pct_length_10 | pct_length_20 | pct_length_50 | pct_length_100 | +---------------+---------------+---------------+----------------+ | 21.78 | 80.20 | 100.00 | 100.00 | +---------------+---------------+---------------+----------------+
Es zeigt an, dass 80 % der Zeichenfolgen weniger als 20 Zeichen lang sind, also eine Präfixlänge von 50 ausreichend.
3. INT-Datentypen anpassen:
Der INT-Datentyp gefolgt von einem numerischen Argument (z. B. INT(1)) hat keinen Einfluss auf die Speicherung oder den Wertebereich. INT-Datentypen belegen immer 4 Bytes und erlauben Werte im Bereich von -2147483648 bis 2147483647. Das numerische Argument wirkt sich nur auf das Auffüllen während der Anzeige aus.
Das obige ist der detaillierte Inhalt vonWie löst man den MySQL-Fehler 1071: „Der angegebene Schlüssel war zu lang; die maximale Schlüssellänge beträgt 1000 Bytes'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!