Несовместимые ошибки MySQL COLLATE в разных базах данных - PullRequest
4 голосов
/ 16 марта 2010

У меня есть две физически отдельные базы данных MySQL, для которых мне нужно выполнить один запрос.

В запросе есть раздел SQL, который выглядит следующим образом:

and foo_table.bar_column like concat('%', rules.pattern, '%') COLLATE utf8_general_ci

Он отлично работает в базе данных A, но в базе данных B я получаю эту ошибку:

* +1007 *

Если я удаляю параметры сортировки, она работает нормально в базе данных 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

1 Ответ

0 голосов
/ 16 марта 2010

Некоторая многообещающая информация здесь .

ОБНОВЛЕНИЕ: предложения в этой ссылке решили мою проблему, хотя синтаксис немного устарел, и вам больше не нужно преобразовывать каждый столбец, только таблицу.

ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;
...