Чиним ошибку Битрикс или приводим collation mysql к единой стандарту


После недавнего обновления Битрикса с новой структурой месторасположений стала возникать критическая ошибка при оформлении заказа на сайте и при работе с разделом Заказы в админ панели:

Mysql query error: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation ‘=’ (400)

Как её удалось решить… 

!!!ВЫПОЛНЯЕТЕ НА СВОЙ СТРАХ И РИСК, СДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ ЧЕРЕЗ АДМИН ПАНЕЛЬ БИТРИКСА!!!
0. Заходим в консоль сервера (через SSH)
1. Снять дамп базы:

mysqldump -uusername-ppassword-c-e--default-character-set=utf8 --single-transaction--skip-set-charset--add-drop-database-B dbname&gt; dump.<code>sql

2. Сделать копию дампа

cp dump.sql dump-fixed.sql

3. Поправить collation в sql

vim dump-fixed.sql

//Здесь нужна небольшая исследовательская работа по выявлению правильной кодировки, у меня это такая
:%s/DEFAULT CHARSET=utf8;/DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci;/

//Определить достаточно легко - по ошибке. Идёт конфликт двух collation utf8_unicode_ci и utf8_general_ci. Вам надо сделать так, чтобы в базе они была единая. Если у вас кодировка таблицы отличная от utf8 (например cp1251), то её трогать не надо. По ошибке будет понятно проблема с cp1251 или utf8

//Сохраняем файл

:wq

4. Залить дапм обратно в БД

mysql -uusername-ppassword&lt; dump<code>-fixed.sql

После этого у меня заработали - Заказы (все были пустые), оформление заказа на сайте (не работал location), Местоположения для сайтов и Избранные местоположения


Теги: ,

Четверг, 12 Мар 2015 Битрикс
Март 2015
Пн Вт Ср Чт Пт Сб Вс
« Фев   Июн »
 1
2345678
9101112131415
16171819202122
23242526272829
3031