1267: Illegal mix of collations
MySQLQue signifie cette erreur ?
Dans une opération de comparaison ou de combinaison (JOIN, WHERE, UNION, CONCAT), deux chaînes de collations différentes ont été combinées et MySQL n'a pas pu déterminer quelles règles de collation appliquer.
Cause
Généralement la comparaison de colonnes de jeux de caractères/collations différents (par ex. utf8mb4_general_ci contre utf8mb4_unicode_ci, ou latin1 contre utf8mb4), ou une incohérence entre une colonne et la collation de la connexion. Fréquent lorsque les tables/bases ont été créées avec des valeurs par défaut différentes.
Comment la corriger
Amenez les deux côtés de la comparaison à la même collation : précisez une collation explicite avec COLLATE (par ex. col1 = col2 COLLATE utf8mb4_unicode_ci) ou utilisez CONVERT(... USING ...). Comme correctif durable, convertissez les colonnes/tables concernées vers un jeu de caractères et une collation uniques et cohérents. Alignez aussi la collation de la connexion (collation_connection).
Autres entrées pour ce moteur
- 3948Loading local data is disabled; this must be enabled on both the client and server sides (le chargement de données locales est désactivé ; il doit être activé côté client et côté serveur)
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key (définition de table incorrecte : une seule colonne auto, qui doit être définie comme clé)
- 1055Expression not in GROUP BY (only_full_group_by) (expression absente du GROUP BY)
- 1030Got error N from storage engine
- 1197Multi-statement transaction required more than 'max_binlog_cache_size' (la transaction multi-instructions a nécessité plus que 'max_binlog_cache_size')
- 1785Statement violates GTID consistency (l'instruction viole la cohérence GTID)
- 3024Query execution was interrupted, maximum statement execution time exceeded (exécution de la requête interrompue : durée maximale d'exécution dépassée)