Ошибка «Недопустимая комбинация сопоставлений» - PullRequest
1 голос
/ 04 февраля 2010

Я просматривал журнал ошибок моего приложения на Rails и обнаружил, что кто-то столкнулся со следующей ошибкой:

"Mysql::Error: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=': SELECT * FROM `tags` WHERE (name = LOWER('?')) LIMIT 1"

Я понимаю причину этой ошибки, однако у меня возникают проблемы с ее исправлением, потому что я не могу продублировать ее. В моем соединении с базой данных используется соединение utf8, а для сортировки таблицы tags - latin1_swedish_ci, но, что бы я ни пытался сделать, я не могу повторить ошибку.

Должен ли я просто изменить tags на использование сортировки utf8_general_ci и надеяться, что это решит проблему? Или у кого-нибудь есть другие идеи?

1 Ответ

2 голосов
/ 04 февраля 2010

Я столкнулся с этим же вопросом на прошлой неделе.В моем случае это закончилось тем, что у меня было одно поле, перечисленное как latin1_swedish_ci в таблице, которая в противном случае была UTF-8.Если вы в основном работаете с базой данных UTF-8, а мы говорим о строковых данных, я бы просто изменил параметры сортировки и избавил себя от некоторых проблем.Прямо сейчас вы можете использовать его не так, как в случае ошибок, но если вы забудете и, например, оставите соединение с этими данными, то в будущем вы можете столкнуться с проблемами.

...