DBAtlas · Atlas d'exploitation des bases de données

1170: ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length (colonne BLOB/TEXT utilisée dans une clé sans longueur de clé)

MySQL

Que signifie cette erreur ?

Vous avez utilisé une colonne BLOB ou TEXT dans une définition d'index/de clé sans préciser de longueur de préfixe. Ces types ne peuvent pas être indexés intégralement ; seuls les N premiers caractères/octets peuvent l'être.

Cause

Définition d'un INDEX/UNIQUE/PRIMARY KEY sur une colonne TEXT/BLOB sans longueur dans CREATE TABLE ou CREATE INDEX. MySQL exige une longueur de préfixe car il ne peut pas indexer intégralement ces valeurs potentiellement très volumineuses.

Comment la corriger

Précisez une longueur de préfixe dans l'index, par exemple INDEX (description(255)). Exemple : ALTER TABLE my_table ADD INDEX idx_description (description(191)); (191 est couramment utilisé avec utf8mb4 en raison de la limite de préfixe de clé d'InnoDB). Si une recherche plein texte est nécessaire, envisagez un index FULLTEXT. Pour des champs qui doivent être courts et uniques, convertir la colonne en VARCHAR peut être plus approprié.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur