Несовместимые ошибки MySQL COLLATE в разных базах данных
У меня есть две физически отдельные базы данных MySQL, для которых мне нужно выполнить один запрос.
В запросе есть раздел SQL, который выглядит следующим образом:
and foo_table.bar_column like concat('%', rules.pattern, '%') COLLATE utf8_general_ci
Он отлично работает в базе данных A, но в базе данных BI получаю эту ошибку:
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
Если я удаляю параметры сортировки, то она отлично работает в базе данных B, но в базе данных AI выдает такую ошибку:
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
1 ответ
Некоторая многообещающая информация здесь.
ОБНОВЛЕНИЕ: предложения в этой ссылке решили мою проблему, хотя синтаксис немного устарел, и вам больше не нужно конвертировать каждый столбец, только таблицу.
ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;