Изменение конфига MySQL в Joomla 5.2.1 с помощью плагина
Или решаем откладываем проблему с большим количеством характеристик товаров в JoomShopping.
Ситуация:
В JoomShopping для каждой характеристики товара создаётся столбец в таблице#__jshopping_products_to_extra_fields
. Со временем характеристик становится много и попытка создания новой характеристики приводит к ошибке. До сих пор помогало изменение типа столбцов сVARCHAR(100)
наTEXT
. Но на днях столкнулся с тем что после создания около 400 храктеристик проблема вернулась.
В качестве решения можно отключить строгий режим в MySQL.
Joomla позволяет сделать это даже если у вас нет прав изменять конфигурацию сервера.
В классе Joomla\Database\Mysqli\MysqliDriver
в методе connect
вызывается событие onAfterConnect
. Напишем системный плагин и в обработчике этого события выполним запрос для установки innodb_strict_mode=0
.
$driver = $event->getDriver();
$driver->connection->query('SET @@SESSION.innodb_strict_mode = 0;');
Таким образом запрос SET @SESSIONN.innodb_strict_mode = 0;
будет выполняться при каждом соединении с базой.