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

1170: ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length (coluna BLOB/TEXT usada em uma chave sem comprimento de chave)

MySQL

O que significa?

Você usou uma coluna BLOB ou TEXT em uma definição de índice/chave sem especificar um comprimento de prefixo. Esses tipos não podem ser indexados por completo; apenas os primeiros N caracteres/bytes podem ser indexados.

Por que acontece?

Definir um INDEX/UNIQUE/PRIMARY KEY em uma coluna TEXT/BLOB sem comprimento em CREATE TABLE ou CREATE INDEX. O MySQL exige um comprimento de prefixo porque não consegue indexar por completo esses valores potencialmente muito grandes.

Como resolver

Especifique um comprimento de prefixo no índice, como INDEX (description(255)). Exemplo: ALTER TABLE my_table ADD INDEX idx_description (description(191)); (191 é comumente usado com utf8mb4 por causa do limite de prefixo de chave do InnoDB). Se for necessária busca de texto completo, considere um índice FULLTEXT. Para campos que devem ser curtos e únicos, converter a coluna para VARCHAR pode ser mais adequado.

Abrir no DBAtlas →

Mais entradas deste banco