1071: Specified key was too long; max key length is 767 bytes (clé trop longue ; longueur maximale de 767 octets)
MySQLQue 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.
Autres entrées pour ce moteur
- 1048Column 'x' cannot be null (la colonne ne peut pas être NULL)
- 1292Incorrect datetime value / truncated incorrect value (valeur datetime incorrecte / valeur incorrecte tronquée)
- 1406Data too long for column (données trop longues pour la colonne)
- 1050Table already exists (la table existe déjà)
- 1051Unknown table 'x' (table inconnue)
- 1091Can't DROP 'x'; check that column/key exists (DROP impossible ; vérifiez que la colonne/clé existe)
- 1093You can't specify target table 'x' for update in FROM clause (table cible de la mise à jour interdite dans la clause FROM)