erreurs MySQL inconsistants COLLATE à travers des bases de données
-
20-09-2019 - |
Question
J'ai deux bases de données MySQL physiquement séparés sur lequel je dois exécuter une seule requête.
La requête a une section de SQL qui ressemble à ceci:
and foo_table.bar_column like concat('%', rules.pattern, '%') COLLATE utf8_general_ci
Il fonctionne bien sur la base de données A, mais sur la base de données B je reçois cette erreur:
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
Si je supprime le classement, il fonctionne bien sur la base de données B, mais sur la base de données A je reçois cette erreur:
ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation 'like'
Y at-il une version de la requête qui se déroulera sur les deux bases de données?
Ou, est-il une configuration que je peux changer de chaque base de données pour la requête heureuse dans les deux endroits?
Mise à jour:
A la base de données est une version 5.1.38, Base de données B est une version 5.1.34
La solution
Certains prometteurs ici .
Mise à jour:. les suggestions dans ce lien a résolu mon problème, bien que la syntaxe est un peu hors de date et vous ne devez pas convertir plus chaque colonne, juste la table
ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;