Virtuemart. 500 Ошибка JDatabaseMySQLi::query Illegal mix of collations for operation 'like'

Почти ни с того ни с сего вдруг перестал работать поиск кириллицы по товарам Virtuemart.

Пишет:

JDatabaseMySQLi::query Illegal mix of collations for operation 'like' ...

Поискав нашел, что это несоответствие кодировки данных в таблице и способа сравнения. Проверил способ сравнения в adminer, там все было совпадающим - utf8_general_ci. Вроде все верно.

Однако присмотрелся к запросу и увидел, что одно из полей это дата добавления. Именно она приводит к такой ошибке 500.

Это поле было выбрано в настройках Virtuemart - поля для поиска. Убираем галочку и ошибка пропадает.

Пока копал как это лечить находил вот такой непроверенный код

SHOW VARIABLES LIKE ‘%collation%’

Выдал:

 Variable_name  Value
collation_connection    utf8mb4_general_ci
collation_database  utf8_general_ci
collation_server    cp1251_general_ci

Что-то все три и разные, а должны быть одинаковые(хотя все исправно работает). У таблиц стоит режим сравнения(Collations) utf8_general_ci.

В общем, если ошибки идут и у вас нет несоответствия типов поиска в LIKE, то можно после каждого LIKE поставить COLLATE utf8_general_ci. Или заменить utf8_general_ci на вашу кодировку.

Заметили ошибку, можете подсказать еще что-то? - Обращаемся сюда

Примеры работ

Информация