Beim Erstellen einer Tabelle stieß ich auf ein interessantes Problem. Die Meldung „Angegebener Schlüssel war zu lang; die maximale Schlüssellänge beträgt 767 Bytes“ erschien. Aus der Beschreibung geht hervor, dass der Schlüssel zu lang ist und das angegebene Limit von 767 Bytes überschreitet. Unten sehen Sie die Tabellenstruktur, die das Problem verursacht CREATE TABLE `test_table` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(1000) NICHT NULL STANDARD '', `link` varchar(1000) NICHT NULL STANDARD '', Primärschlüssel (`id`), SCHLÜSSEL `Name` (`Name`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; Wir können sehen, dass wir für den Namen die Länge auf 1000 variable Zeichen festgelegt haben. Da die utf8mb4-Kodierung verwendet wird, beträgt die Größe 1000 * 4 > 767 Interessierte Studenten können es testen Lösung 1
my.cnf-Konfiguration Setzen Sie global innodb_large_prefix=on; Setzen Sie global innodb_file_per_table=on; Setzen Sie global innodb_file_format=BARRACUDA; Setzen Sie global innodb_file_format_max=BARRACUDA; Der Grund für die obigen 3072 Bytes ist wie folgt Wir wissen, dass die Standardgröße einer InnoDB-Seite 16 KB beträgt. Da es sich um eine Btree-Organisation handelt, muss eine Seite auf einem Blattknoten mindestens zwei Datensätze enthalten (andernfalls verkommt sie zu einer verknüpften Liste). Lösung 2 Fügen Sie beim Erstellen einer Tabelle row_format=DYNAMIC hinzu CREATE TABLE `test_table` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NICHT NULL STANDARD '', `link` varchar(255) NICHT NULL STANDARD '', Primärschlüssel (`id`), SCHLÜSSEL `Name` (`Name`) )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 row_format=DYNAMISCH; Die Funktion dieses Parameters ist wie folgt MySQL-Indizes unterstützen nur 767 Bytes, und jedes Zeichen in utf8mb4 belegt 4 Bytes, sodass die maximale Länge des Indexes nur 191 Zeichen betragen kann, also varchar(191). Wenn Sie ein größeres Feld verwenden möchten, muss MySQL so eingestellt werden, dass es die Datenkomprimierung unterstützt, und das Tabellenattribut row_format ={DYNAMIC|COMPRESSED} ändern. Dies ist das Ende dieses Artikels über die Lösung des Problems, dass der MySQL-Index zu lang ist. Weitere Informationen zum Problem, dass der MySQL-Index zu lang ist, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Eine Sammlung gängiger Verwendungen von HTML-Meta-Tags
>>: Fortgeschrittene Techniken zur Verwendung von CSS (im tatsächlichen Kampf verwendet)
Wir hoffen, dass wir durch die Einbindung der Wet...
1. Installieren Sie Tomcat 1. Suchen Sie das Tomc...
Apache SkyWalking Apache SkyWalking ist ein Tool ...
Sogenanntes Talent (linke und rechte Gehirnhälfte...
Versatz Offset ist der Offset. Mithilfe der Offse...
Inhaltsverzeichnis Vorwort 1. Installieren Sie da...
1. Der Tomcat-Dienst ist nicht geöffnet Geben Sie...
Einführung Das MySQL-Protokoll für langsame Abfra...
Inhaltsverzeichnis Installieren Grundlegende Konf...
Noscript-Definition und -Verwendung Das Noscript-...
Inhaltsverzeichnis Was ist Rract? Hintergrund Rea...
Schnelle Lösung zum Vergessen des MySQL-Datenbank...
Inhaltsverzeichnis 1. Was ist Promise? 2. Warum g...
In diesem Artikel wird die spezifische Methode zu...
Hintergrund Bei der Replikation handelt es sich u...