Inconsistentes errores de MySQL a través de bases de datos COLLATE
-
20-09-2019 - |
Pregunta
tengo dos bases de datos MySQL físicamente separados en los que tengo que correr una sola consulta.
La consulta tiene una sección de SQL que se parece a esto:
and foo_table.bar_column like concat('%', rules.pattern, '%') COLLATE utf8_general_ci
funciona muy bien en la base de datos A, pero en la base de datos B me sale este error:
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
Si quito la colación que funciona muy bien en la base de datos B, pero en la base de datos de un recibo este error:
ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation 'like'
¿Hay una versión de la consulta que se ejecutará en ambas bases de datos?
O, hay una configuración que puede cambiar en cualquier base de datos para realizar la consulta feliz en ambos lugares?
Actualización:
Base de datos A es la versión 5.1.38, Base de datos B es la versión 5.1.34
Solución
aquí .
ACTUALIZACIÓN:. las sugerencias de que enlazan resuelven mi problema, aunque la sintaxis es un poco fuera de fecha y no se tiene que convertir cada columna más, sólo la tabla
ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;