Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
При запуске репликации получаю ошибки:
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'
Неактивен
Использовать init-connect — плохо, попробуйте для начала убрать эту опцию. Во-вторых, я бы рекомендовал убрать также и все остальные упоминания кодировок: в 2018 году работать не в utf-8 — плохо (при этом можете оставить базы в cp1251, чтобы избежать длительной переконвертации).
Кодировка консоли не должна играть роли при подключении серверов между собой и при дампе (в дампе пишется явный set names).
Неактивен
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))
Неактивен