DBAtlas · Atlas d'exploitation des bases de données

1071: Specified key was too long; max key length is 767 bytes (clé trop longue ; longueur maximale de 767 octets)

MySQL

Que signifie cette erreur ?

L'index (ou la clé) en cours de création a dépassé la longueur maximale autorisée en octets. Avec les jeux de caractères multi-octets en particulier, les index VARCHAR atteignent rapidement cette limite.

Cause

Index sur une colonne VARCHAR large en utf8mb4 (4 octets par caractère) ; ancien format de ligne InnoDB (REDUNDANT/COMPACT ; en 5.7 et antérieures, également innodb_large_prefix désactivé) ; longueur totale d'un index composite multi-colonnes dépassant la limite ; grande clé primaire.

Comment la corriger

Raccourcissez la longueur de la colonne indexée ou utilisez un index sur préfixe : CREATE INDEX idx ON my_table (my_column(191)); Passez à la limite de 3072 octets avec le format de ligne DYNAMIC/COMPRESSED (DYNAMIC est le format par défaut dans MySQL 8.0 ; innodb_large_prefix a été supprimé en 8.0 et n'est nécessaire qu'en 5.7 et antérieures). Si nécessaire, revoyez le jeu de caractères/la longueur de la colonne.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur