DBAtlas · Atlas de operações de banco de dados

1071: Specified key was too long; max key length is 767 bytes

MySQL

O que significa?

O índice (ou chave) que está sendo criado excedeu o comprimento máximo permitido em bytes. Especialmente com character sets multibyte, índices VARCHAR atingem esse limite rapidamente.

Por que acontece?

Um índice em uma coluna VARCHAR larga com utf8mb4 (4 bytes por caractere); um row format antigo do InnoDB (REDUNDANT/COMPACT; no 5.7 e anteriores também innodb_large_prefix desabilitado); o comprimento total de um índice composto de várias colunas excedendo o limite; uma primary key grande.

Como resolver

Reduza o comprimento da coluna indexada ou use um prefix index: CREATE INDEX idx ON my_table (my_column(191)); Passe para o limite de 3072 bytes com o row format DYNAMIC/COMPRESSED (DYNAMIC é o padrão no MySQL 8.0; innodb_large_prefix foi removido no 8.0 e só é necessário no 5.7 e anteriores). Se necessário, revise o character set/comprimento da coluna.

Abrir no DBAtlas →

Mais entradas deste banco