$connection = Bitrix\Main\Application::getConnection();
$connection->queryExecute(“SET sql_mode=””);
$connection->queryExecute(“SET innodb_strict_mode=0”);
Ошибка, которую вы видите, говорит о том, что в MySQL установлена переменная sql_mode с значением NO_ENGINE_SUBSTITUTION, что может вызывать проблемы при работе с некоторыми запросами или при создании/обновлении таблиц.
Чтобы исправить эту ошибку и очистить переменную `sql_mode`, выполните следующие шаги:
1. Проверьте текущие значения sql_mode:
Для этого нужно выполнить следующий SQL-запрос в MySQL:
sql Скопировать
Закрыть блок
SHOW VARIABLES LIKE 'sql_mode';
Это покажет текущее значение переменной `sql_mode`.
2. Измените sql_mode на пустое значение:
Чтобы временно очистить `sql_mode`, выполните команду:
sql Скопировать
Закрыть блок
SET GLOBAL sql_mode = '';
Эта команда очистит `sql_mode` на уровне глобальных настроек для всех сессий. Однако эта настройка сбрасывается при перезагрузке MySQL.
3. Перманентное изменение в конфигурации:
Чтобы переменная `sql_mode` оставалась пустой после перезагрузки MySQL, нужно изменить конфигурационный файл `my.cnf` или `my.ini` (в зависимости от операционной системы).
-
Найдите файл конфигурации MySQL. Обычно он находится в одном из следующих мест:
<li>`/etc/mysql/my.cnf`
- `/etc/my.cnf`
- `/etc/mysql/mysql.conf.d/mysqld.cnf`
-
Откройте файл для редактирования:
bash Скопировать
Закрыть блок
sudo nano /etc/mysql/my.cnf
- В разделе `[mysqld]` добавьте или измените строку, чтобы она выглядела так:
ini Скопировать
Закрыть блок
[mysqld]
sql_mode=""
- Перезапустите MySQL:
bash Скопировать
Закрыть блок
sudo systemctl restart mysql
4. Проверьте изменения:
После этого вы можете снова выполнить запрос для проверки значения переменной:
sql Скопировать
Закрыть блок
SHOW VARIABLES LIKE 'sql_mode';
Теперь значение должно быть пустым, и ошибка больше не должна возникать.