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)
MySQL-Datenbank meldet FEHLER 1045 (28000): Zugri...
DOCTYPE-DEKLARATION: Oben auf jeder Seite, die Sie...
Inhaltsverzeichnis 1. asynchron 2. warten: 3. Umf...
Inhaltsverzeichnis Hintergrund 1) Aktivieren Sie ...
In diesem Artikel wird der spezifische Code von j...
Wenn wir in der MySQL-Datenbank Fuzzy-Abfragen be...
Inhaltsverzeichnis 2 Lösungen für den Dateiupload...
Vorwort MySQL 8.0.13 unterstützt nun den Index-Sk...
Vorwort Im vorherigen Artikel haben wir hauptsäch...
MySQL-Speicher-Engine: Der MySQL-Server verwendet...
Inhaltsverzeichnis Vorwort 1. Setzen Sie den Prot...
Als Front-End-Ingenieure müssen wir mit dem IE ve...
In diesem Artikel wird der spezifische Code von V...
Pseudoelemente und Pseudoklassen Apropos, schauen...
Inhaltsverzeichnis Vorwort Erkennen des geöffnete...