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

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top