почему я получаю эту ошибку? - PullRequest
0 голосов
/ 03 февраля 2011

Я импортировал данные mysql со своего локального компьютера на веб-сервер через phpmyadmin, и когда я запускаю свой скрипт, я получаю эту ошибку

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

почему это происходит ??и как я могу это решить ??

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Проблема в том, что сопоставление вашего соединения сравнивается с сопоставлением сравниваемого столбца.У вас есть три реальных варианта.Либо приведите сравнение к соответствующему сопоставлению, измените сопоставление столбца или измените сопоставление вашего соединения.

Для приведения:

WHERE fooColumn = CAST('test' AS CHAR CHARACTER SET utf8) COLLATE utf8_general_ci

Для изменения сопоставления столбца:

ALTER TABLE fooTable 
    MODIFY follColumn VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;

Чтобы изменить параметры соединения:

SET NAMES utf8 COLLATE utf8_general_ci

и т. Д.Если вам нужна более точная информация, покажите ваш запрос и определения таблиц.

0 голосов
/ 03 февраля 2011

Вы не можете сравнивать две строки с двумя разными кодировками символов.Они должны иметь одинаковую кодировку символов.Это в основном то, что касается сортировки - она ​​должна быть одинаковой для обоих сравниваемых столбцов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...