我有两个物理上独立的MySQL数据库,我必须运行一个查询。
查询的SQL部分如下所示:
and foo_table.bar_column like concat('%', rules.pattern, '%') COLLATE utf8_general_ci
它在数据库A上运行正常,但在数据库B上我收到此错误:
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
如果我删除了排序规则,它在数据库B上正常运行,但在数据库A上我收到此错误:
ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation 'like'
是否有可在两个数据库上运行的查询版本?
或者,我是否可以在任一数据库中更改配置,以使查询在两个位置都满意?
更新
数据库A是版本5.1.38, 数据库B是版本5.1.34
答案 0 :(得分:0)
一些有希望的information here。
更新:该链接中的建议解决了我的问题,虽然语法有点过时,您不必再转换每一列,只需要表格。
ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;