База знаний
Войдите в личный кабинет для возможности задавать вопросы и отвечать на комментарии.
FAQ

Ошибка Query Error 1267: Illegal mix of collations (latin1_swedish_ci,IMPLICIT)

Поддержка Bodysite
Поддержка Bodysite
8 ноября 2021 23:57
Есть ответ
+1

Начали использовать плагин интеграции с Яндекс. Маркетом.
При поступлении первого заказа и попытке в него войти поймали ошибку 1267

Query Error 1267: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '='
Query: SELECT DISTINCT n.* FROM shop_notification n
JOIN shop_notification_params np ON n.id = np.notification_id
LEFT JOIN shop_notification_sources ns ON n.id = ns.notification_id
WHERE n.status = 1
AND (ns.source = 'all_sources' OR ns.source IS NULL OR ns.source = 'Яндекс.Маркет/*')
AND np.name = 'to' AND np.value = 'customer'
## wa-system/database/waModel.class.php(266)
#0 wa-system/database/waModel.class.php(367): waModel->run('SELECT DISTINCT...')
#1 wa-system/database/waDbStatement.class.php(229): waModel->query('SELECT DISTINCT...')
#2 wa-system/database/waModel.class.php(347): waDbStatement->query(Array)
#3 wa-apps/shop/lib/model/shopNotification.model.php(41): waModel->query('SELECT DISTINCT...', '/xD0/xAF/xD0/xBD/xD0/xB4/xD0/xB5/xD0/xBA/xD1/x81./xD0/x9C...')
#4 wa-apps/shop/lib/classes/shopOrder.class.php(1039): shopNotificationModel->getActionTransportsBySource('/xD0/xAF/xD0/xBD/xD0/xB4/xD0/xB5/xD0/xBA/xD1/x81./xD0/x9C...')
#5 wa-apps/shop/lib/classes/shopOrder.class.php(462): shopOrder->readWorkflowActionElements()
#6 wa-apps/shop/lib/actions/order/shopOrder.action.php(36): shopOrder->__get('workflow_action...')
#7 wa-system/controller/waViewAction.class.php(188): shopOrderAction->execute()
#8 wa-system/controller/waViewController.class.php(86): waViewAction->display()
#9 wa-system/controller/waDefaultViewController.class.php(48): waViewController->executeAction(Object(shopOrderAction))
#10 wa-system/controller/waController.class.php(21): waDefaultViewController->execute()
#11 wa-system/controller/waViewController.class.php(46): waController->run(NULL)
#12 wa-system/controller/waFrontController.class.php(263): waViewController->run(NULL)
#13 wa-system/controller/waFrontController.class.php(190): waFrontController->runController(Object(waDefaultViewController), NULL)
#14 wa-system/controller/waFrontController.class.php(84): waFrontController->execute(NULL, 'order', NULL)
#15 wa-system/controller/waDispatch.class.php(157): waFrontController->dispatch()
#16 wa-system/controller/waDispatch.class.php(32): waDispatch->dispatchBackend('shopstaff/shop/')
#17 wa-system/waSystem.class.php(610): waDispatch->dispatch()
#18 index.php(9): waSystem->dispatch()
#19 {main}

2 комментария
Поддержка Bodysite
Поддержка Bodysite
+1

Вероятно, на вашем сайте по какой-то причине в некоторых таблицах базы данных используется кодировка latin1_swedish_ci

Из-за того, что большинство скриптов для платформы Shop-script записывает информацию в кодировке utf8_general_ci и возникает эта ошибка. 

Измените кодировку таблиц на utf8_general_ci, в частности у таблицы shop_notification_sources.

Как посмотреть через админку, какая сейчас кодировка: 

1) Включите режим отладки в настройках сайта:

2) Перейдите в раздел "База данных":

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

Поменять кодировку можно очень легко через PHPMyAdmin.

Как поменять кодировку на примере ISPmanager:

Авторизуемся, в левом меню находим пункт "Базы данных":

Выбираем нужную базу данных и кликаем по ней двойным щелчком:

Далее нужно выделить строку с названием базы данных и кликнуть по значку PHPMyAdmin

В левой колонке в строке поиска вводим название таблицы shop_notification

Выберите таблицу shop_notification_sources , далее в верхней части выберите вкладку "Структура", активируйте чекбокс возле строки source, далее в нижней части нажмите "Изменить"

В колонке "Сравнение" нужно выбрать utf8_general_ci 

И нажмите "Сохранить":

Поддержка Bodysite
Поддержка Bodysite
+1

Вход в PhpMyAdmin на хостинге Netangels располагается по адресу https://*ваш сайт*/mysql/

Логин (root), пароль нужно взять из первого письма, которое приходило при регистрации хостинга. Если не нашли, обратитесь в поддержку хостинга для запроса доступов.

Добавить комментарий
Чтобы добавить комментарий, войдите в личный кабинет