web-dev-qa-db-fra.com

Mélange illégal de classements (utf8mb4_unicode_ci, IMPLICIT) et (utf8mb4_general_ci, IMPLICIT) pour l'opération '='

J'ai eu cette erreur;

Mélange illégal de classements (utf8mb4_unicode_ci, IMPLICIT) et (utf8mb4_general_ci, IMPLICIT) pour l'opération '='

J'ai changé "Collations" en "utf8mb4_unicode_ci". Ensuite, les tableaux ont été tronqués et je ré-importe à nouveau les lignes. Mais toujours la même erreur

11
Michael42

Je suppose que vous avez différents classements sur les tables que vous rejoignez. Il indique que vous utilisez un mélange illégal de classements dans les opérations =.

Vous devez donc définir le classement. Par exemple:

WHERE tableA.field COLLATE utf8mb4_general_ci = tableB.field

Ensuite, vous avez défini les mêmes classements sur le = opération.

Puisque vous n'avez pas fourni plus d'informations sur les tables, c'est le meilleur pseudo-code que je puisse fournir.

10
MrApnea

Pour Join Query, j'ai utilisé ce morceau de requête pour résoudre une telle erreur:

select * from contacts.employees INNER JOIN contacts.sme_info  
ON employees.login COLLATE utf8mb4_unicode_ci = sme_info.login

Plus tôt, en utilisant la requête suivante, j'obtenais la même erreur:

select * from contacts.employees LEFT OUTER JOIN contacts.sme_info  
ON employees.login = sme_info.login

Error: Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

Je ne connais pas grand-chose aux classements, mais il semble que les deux tableaux suivent des règles différentes pour le jeu de caractères. Par conséquent, l'opérateur égal à n'a pas pu effectuer. Ainsi, dans la première requête, j'ai spécifié un ensemble de classements à collecter et à combiner.

4
Prateek Bhuwania