DBAtlas · Atlas de operaciones de bases de datos

1071: Specified key was too long; max key length is 767 bytes (clave demasiado larga; máximo 767 bytes)

MySQL

¿Qué significa?

El índice (o clave) que se está creando superó la longitud máxima permitida en bytes. Sobre todo con conjuntos de caracteres multibyte, los índices VARCHAR alcanzan rápidamente este límite.

¿Por qué ocurre?

Un índice sobre una columna VARCHAR ancha con utf8mb4 (4 bytes por carácter); un formato de fila InnoDB antiguo (REDUNDANT/COMPACT; en 5.7 y anteriores también innodb_large_prefix deshabilitado); la longitud total de un índice compuesto de varias columnas que supera el límite; una clave primaria grande.

Cómo solucionarlo

Acorte la longitud de la columna indexada o use un índice de prefijo: CREATE INDEX idx ON my_table (my_column(191)); Pase al límite de 3072 bytes con el formato de fila DYNAMIC/COMPRESSED (DYNAMIC es el predeterminado en MySQL 8.0; innodb_large_prefix se eliminó en 8.0 y solo es necesario en 5.7 y anteriores). Si es necesario, revise el conjunto de caracteres/longitud de la columna.

Abrir en DBAtlas →

Más entradas de este motor