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 на вашу кодировку.
Заметили ошибку, можете подсказать еще что-то? - Обращаемся сюда