DBAtlas · Atlas für Datenbankbetrieb

1071: Specified key was too long; max key length is 767 bytes (Schlüssel zu lang; maximal 767 Bytes)

MySQL

Was bedeutet das?

Der anzulegende Index (oder Schlüssel) hat die maximal erlaubte Länge in Bytes überschritten. Besonders bei Multibyte-Zeichensätzen erreichen VARCHAR-Indizes dieses Limit schnell.

Ursache

Ein Index auf einer breiten VARCHAR-Spalte mit utf8mb4 (4 Bytes pro Zeichen); ein altes InnoDB-Row-Format (REDUNDANT/COMPACT; in 5.7 und früher auch ein deaktiviertes innodb_large_prefix); die Gesamtlänge eines zusammengesetzten Index über mehrere Spalten überschreitet das Limit; ein großer Primärschlüssel.

Lösung

Verkürze die indizierte Spaltenlänge oder verwende einen Präfix-Index: CREATE INDEX idx ON my_table (my_column(191)); Wechsle mit dem Row-Format DYNAMIC/COMPRESSED auf das Limit von 3072 Bytes (DYNAMIC ist in MySQL 8.0 Standard; innodb_large_prefix wurde in 8.0 entfernt und ist nur in 5.7 und früher nötig). Überprüfe bei Bedarf Zeichensatz/Länge der Spalte.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank