DBAtlas · Atlas de operaciones de bases de datos

1170: ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length (columna BLOB/TEXT usada en una clave sin longitud de clave)

MySQL

¿Qué significa?

Usó una columna BLOB o TEXT en una definición de índice/clave sin especificar una longitud de prefijo. Estos tipos no se pueden indexar completos; solo se pueden indexar los primeros N caracteres/bytes.

¿Por qué ocurre?

Definir un INDEX/UNIQUE/PRIMARY KEY sobre una columna TEXT/BLOB sin longitud en CREATE TABLE o CREATE INDEX. MySQL exige una longitud de prefijo porque no puede indexar completos estos valores potencialmente muy grandes.

Cómo solucionarlo

Especifique una longitud de prefijo en el índice, como INDEX (description(255)). Ejemplo: ALTER TABLE my_table ADD INDEX idx_description (description(191)); (191 se usa habitualmente con utf8mb4 por el límite de prefijo de clave de InnoDB). Si se necesita búsqueda de texto completo, considere un índice FULLTEXT. Para campos que deben ser cortos y únicos, puede ser más adecuado convertir la columna a VARCHAR.

Abrir en DBAtlas →

Más entradas de este motor