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)
MySQLO 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.
Mais entradas deste banco
- 1836ER_READ_ONLY_MODE: Running in read-only mode (em execução no modo somente leitura)
- 3819ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (a constraint CHECK foi violada)
- 1118ER_TOO_BIG_ROWSIZE: Row size too large
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log (comando inseguro gravado no binary log)
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text
- 1526ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value (a tabela não tem nenhuma partição para o valor)
- 1049Unknown database 'name'