MySQL Недопустимое сочетание параметров сортировки (utf8_unicode_ci, IMPLICIT) и (utf8_general_ci, IMPLICIT) для операции '=' - PullRequest
11 голосов
/ 15 июня 2009

Мне нужна ваша помощь в определении причины этой ошибки

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

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

Я создал другую схему с той же структурой и попытался выполнить тот же запрос, он работает нормально, но не в своей исходной схеме.

Кто-нибудь может предоставить какие-либо материалы по этому вопросу? Почему так происходит?

Ответы [ 4 ]

8 голосов
/ 20 июля 2011

У меня была такая же проблема, и я обнаружил, что таблицы имели одинаковое сопоставление, а столбцы - нет. Вы можете скачать пробную версию mysqlyog и снять пометки в настройках скрытого языка .... Самый быстрый способ увидеть.

4 голосов
/ 16 ноября 2012

в моем случае это было из-за тупой верстак MySQL - он каким-то образом добавляет к процедуре сопоставление по умолчанию для схемы (для некоторых метаданных или чего-либо еще), а затем, если вы сопоставляете что-либо в процедуре с другим сопоставлением, возникает это исключение;

должен установить правильное (то, которое используется в процедуре) сопоставление для схемы, а затем повторно отредактировать процедуру и применить изменения (должны быть сохранены или созданы заново), и теперь все в порядке

2 голосов
/ 08 июля 2014

Каждый параметр функции concat необходимо преобразовать.

CONCAT(CONVERT(field_A USING utf32), CONVERT(field_B USING utf32))

Или у которых когда-либо возникали проблемы с.

0 голосов
/ 27 июля 2015

моя проблема была такой же, но в моем случае достаточно было использовать преобразование перед использованием оператора SQL - в php

iconv(...)
...