Ошибка "SQL_MODE В MYSQL должна быть пустая" в 1С-Битрикс — что делать и как исправить

CMS.BY

Многие веб-разработчики, работающие с движком 1С-Битрикс, при проверке системы сталкивались с сообщением:

Ошибка! Переменная sql_mode в MySQL должна быть пустая, текущее значение...

В этой статье мы разберём причины возникновения ошибки, а также шаг за шагом покажем, как её устранить с практическими примерами кода.

Почему возникает ошибка SQL_MODE?

Параметр `sql_mode` определяет режим работы MySQL. Некоторые значения этой переменной, например, `STRICT_TRANS_TABLES` или `ONLY_FULL_GROUP_BY`, могут быть несовместимы с CMS 1С-Битрикс. В результате возникают многочисленные некорректные поведения, либо полностью работоспособность части функционала сайта.

Пример ошибки в проверке системы Битрикс:

Ошибка! Переменная sql_mode в MySQL должна быть пустая, текущее значение: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

Как исправить ошибку sql_mode?

Шаг 1. Переходим к редактированию файлов инициализации

Битрикс позволяет "подлечить" параметры соединения с БД через дополнительные файлы. Нам нужны два файла:

  • `/bitrix/php_interface/after_connect_d7.php`
  • `/bitrix/php_interface/after_connect.php`

Если файлов нет — создаем их с правами доступа, как и у других файлов в папке.

Шаг 2. Исправляем after_connect_d7.php

Это файл для нового D7 ядра Bitrix.

Открываем или создаём файл:

  • `/bitrix/php_interface/after_connect_d7.php`

Вставляем код:

$connection = Bitrix\Main\Application::getConnection();
$connection->queryExecute("SET sql_mode=''");

⚠️ В большинстве проектов строка с получением `$connection` уже присутствует. Важно добавить только команду установки sql_mode!

Шаг 3. Исправляем after_connect.php

Это файл для "старого" подключения Битрикса к базе данных.

Открываем или создаём файл:

  • `/bitrix/php_interface/after_connect.php`

Вставляем код:

$DB->Query("SET sql_mode=''");

Шаг 4. Сохраняем изменения и проверяем результат

  1. Сохраняем оба файла.
  2. Запускаем повторную проверку системы через административный раздел Битрикса ("Проверка системы").
  3. Обнаруживаем, что ошибка исчезла!

Почему нельзя просто поменять sql_mode в настройках MySQL?

Иногда администраторы меняют этот параметр в конфигурации MySQL (`my.cnf` или через глобальные переменные). Но на хостингах (особенно виртуальных) часто не дают такой возможности. Поэтому самостоятельная команда `SET sql_mode=''` при каждом подключении — самый универсальный и рабочий способ для проектов на Bitrix.

Редакция CMS.BY

Редакция CMS.BY

С нами Мир познавать проще и надёжнее

shape

У Вас остались вопросы? Обязательно обратитесь к нам
Мы проконсультируем Вас по любому вопросу в сфере IT

Оставить заявку