SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.08.2018 09:52:39

Alex285
Участник
Зарегистрирован: 03.08.2018
Сообщений: 2

Illegal mix of collations

Добрый день.
При запуске репликации получаю ошибки:

Last_SQL_Errno: 1366
Last_SQL_Error: Error 'Incorrect string value: '\xCD\xE8\xEA\xE8\xF5\xE8...' for column

или

Last_SQL_Errno: 1267
Last_SQL_Error: Error 'Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='' on query


В cmd установил chcp 1251, в запросах наблюдаю русские буквы.
Дамп снимаю с мастера, загружаю на слейв без ошибок.
Данные на слейве читаю нормально, русские буквы.

Подскажите куда еще капнуть чтобы побороть проблему сортировок/кодировок



Master
winxp+mysql5.5.23
база - cp1251, таблицы и столбцы - cp1251


+--------------------------+-----------
| Variable_name            | Value   
+--------------------------+----------
| character_set_client     | cp1251
| character_set_connection | cp1251
| character_set_database   | cp1251
| character_set_filesystem | binary 
| character_set_results    | cp1251 
| character_set_server     | cp1251
| character_set_system     | utf8

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | cp1251_general_ci |
| collation_database   | cp1251_general_ci |
| collation_server     | cp1251_general_ci |
+----------------------+-------------------+




Slave
win10+mysql5.7.22
база-cp1251, таблица и столбцы - cp1251


+--------------------------+-----------
| Variable_name            | Value   
+--------------------------+----------
| character_set_client     | cp1251
| character_set_connection | cp1251
| character_set_database   | cp1251
| character_set_filesystem | binary 
| character_set_results    | cp1251 
| character_set_server     | cp1251
| character_set_system     | utf8

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | cp1251_general_ci |
| collation_database   | cp1251_general_ci |
| collation_server     | cp1251_general_ci |
+----------------------+-------------------+


в настройках на обоих использую

[client]
default-character-set=cp1251

[mysql]
default-character-set=cp1251

[mysqld]
character-set-server = cp1251
collation-server=cp1251_general_ci
init_connect='SET collation_connection = cp1251_general_ci'
init_connect='SET NAMES cp1251'

Неактивен

 

#2 08.08.2018 10:22:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6681

Re: Illegal mix of collations

Использовать init-connect — плохо, попробуйте для начала убрать эту опцию. Во-вторых, я бы рекомендовал убрать также и все остальные упоминания кодировок: в 2018 году работать не в utf-8 — плохо (при этом можете оставить базы в cp1251, чтобы избежать длительной переконвертации).

Кодировка консоли не должна играть роли при подключении серверов между собой и при дампе (в дампе пишется явный set names).

Неактивен

 

#3 28.08.2018 09:54:25

Alex285
Участник
Зарегистрирован: 03.08.2018
Сообщений: 2

Re: Illegal mix of collations

paulus написал:

Использовать init-connect — плохо, попробуйте для начала убрать эту опцию. Во-вторых, я бы рекомендовал убрать также и все остальные упоминания кодировок: в 2018 году работать не в utf-8 — плохо (при этом можете оставить базы в cp1251, чтобы избежать длительной переконвертации).

Кодировка консоли не должна играть роли при подключении серверов между собой и при дампе (в дампе пишется явный set names).

Спасибо, за рекомендацию.
init-connect и остальные настройки не помогли.
Выполнил конвертацию все привел к utf8 (благо БД не очень большая) - репликация заработала.

Следом в репликации столкнулся с Illegal mix of collations for operation = concat.
Пришлось скорректировать свои процедуры добавив в запросы  конструкцию типа

CONCAT(CAST(fName AS CHAR CHARACTER SET utf8),CAST('' AS CHAR CHARACTER SET utf8))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson