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é)
MySQLQue 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é.
Autres entrées pour ce moteur
- 1836ER_READ_ONLY_MODE: Running in read-only mode (fonctionnement en mode lecture seule)
- 3819ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (contrainte CHECK violée)
- 1118ER_TOO_BIG_ROWSIZE: Row size too large (taille de ligne trop grande)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log (instruction non sûre écrite dans le binary log)
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text (texte JSON invalide)
- 1526ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value (aucune partition de la table pour cette valeur)
- 1049Unknown database 'name'