Частая ошибка в режиме работы MySQL на сайтах под управлением 1С-Битрикс. В модуле main версии 19.0.400 добавилась новая проверка innodb_strict_mode. Параметр innodb_strict_mode задаёт режим работы MySQL.
Решение проблемы с innodb_strict_mode
Первый вариант
- Открываем в левом меню «Контент» => «Структура сайта» => «Файлы и папки».
- Переходим в директорию: /bitrix/php_interface/
- Открываем файл: after_connect_d7.php в режиме редактирования PHP кода.
- Вставляем строку:
$connection->queryExecute("SET innodb_strict_mode=0");
- Сохраняем
Полный конфиг файла after_connect_d7.php
$connection = \Bitrix\Main\Application::getConnection();
$connection->queryExecute("SET NAMES 'utf8'");
$connection->queryExecute('SET collation_connection = "utf8_unicode_ci"');
$connection->queryExecute('SET sql_mode=""');
$connection->queryExecute("SET innodb_strict_mode=0");
В этой же директории /bitrix/php_interface/
- Открываем файл: after_connect.php в режиме редактирования PHP кода.
- Вставляем строку:
$DB->Query("SET innodb_strict_mode=0");
- Сохраняем
Полный конфиг файла after_connect.php
$DB->Query("SET NAMES 'utf8'");
$DB->Query('SET collation_connection = "utf8_unicode_ci"');
$DB->Query("SET sql_mode=''");
$DB->Query("SET innodb_strict_mode=0");
Запускаем проверку системы еще раз.
Второй вариант
Если первый вариант не помог, значит необходимо внести правку в настройках MySQL. Для 1С-Bitrix окружения в файле /etc/mysql/conf.d/z_bx_custom.cnf добавить innodb_strict_mode = OFF
[mysqld]
innodb_strict_mode = OFF
После сохранения надо перезагрузить MySQL
service mysqld restart
После этого ошибки при проверке сайта не будет.
Просмотров: 35301
- 2.96
- 1
- 2
- 3
- 4
- 5
Голосов: 696
main (19.0.325) OK. |
|
Написал утром в техподдержку. Пишут что это ошибка мастера проверки. Исправление выйдет позже. |
|
Пользователь 328495 Посетитель Сообщений: 23 |
#3 16.10.2019 18:08:37 А мне написали:
Я исправил вот так: в файлах: На мой вопрос:
пока не ответили. |
||||
Пользователь 328495 Посетитель Сообщений: 23 |
#4 17.10.2019 12:31:04
Из трех заданных вопросов ни на один не ответили:
Разве я спрашивал как починить? Более менее ответ получен здесь: http://dev.1c-bitrix.ru/support/forum/messages/forum32/topic122887/message621578/ |
||||
Пользователь 1190 Посетитель Сообщений: 65 |
#5 18.10.2019 03:43:48
Помогло. Благодарю! |
||
Пользователь 3152861 Заглянувший Сообщений: 2 |
#6 29.10.2019 14:32:23
Мне тоже помогло. Спасибо! |
||
«1С-Битрикс24» — Интернет-магазин + CRM 20.0.0 тоже помогло $DB->Query(«SET innodb_strict_mode=’OFF'»); after_connect.php $connection->queryExecute(«SET innodb_strict_mode=’OFF'»); after_connect_d7.php |
|
Пользователь 2409753 Заглянувший Сообщений: 1 |
#8 06.05.2020 17:01:56
Большое спасибо за точное описание что куда и как вставлять, для несведущих это очень важно и полезно =) Мне помогло, всем спасибо) |
||
то же самое после обновления: Спасибо ! |
|
Не помогает на самой последней версии Битрикс. Сайт перестает работать. |
|
В новых версиях помогло вставить $this->queryExecute(«SET innodb_strict_mode=’OFF'»); в after_connect_d7.php |
|
Пользователь 7125764 Заглянувший Сообщений: 16 |
#12 16.03.2023 11:32:37
спасибо, заработало! предыдущие решения ошибки на сайте вызывали, не открывался |
||
Продолжая использовать этот сайт, Вы принимаете условия политики конфиденциальности и даёте согласие на обработку пользовательских данных. Подробнее
Продолжая использовать этот сайт, Вы принимаете условия политики конфиденциальности и даёте согласие на обработку пользовательских данных (файлов cookie), в том числе с использованием систем аналитики «Яндекс. Метрика» и «Google Analytics», (IP-адрес; версия ОС; версия веб-браузера; сведения об устройстве (тип, производитель, модель); разрешение экрана и количество цветов экрана; наличие программного обеспечения для блокирования рекламы; наличие Cookies; наличие JavaScript; язык ОС и Браузера; время, проведенное на сайте; глубина просмотра; действия пользователя на сайте; географические данные) в целях определения посещаемости сайта. Отказаться от обработки пользовательских данных и использования «cookie» можно, выбрав соответствующие настройки в браузере. Однако это может повлиять на работу некоторых функций сайта. Скрыть
Опция «Проверка системы» в CMS Битрикс позволяет проверить соответствие настроек сервера требованиям CMS и вашего сайта. При запуске этой опции Битрикс, как правило, приводит несколько ошибок и замечаний. В этой статье мы рассмотрим, как их исправить.
Режим работы MySQL
Уведомление:
Ошибка! innodb_strict_mode=ON, требуется OFF. Переменная sql_mode в MySQL должна быть пустая, текущее значение: NO_ENGINE_SUBSTITUTION
Эта ошибка критична. Она может привести к блокировке запросов к базе данных, что практически означает остановку работы сайта.
Решение:
Необходимо внести изменения в файлы конфигурации Bitrix, в которых задаются параметры базы данных, и указать в них нужные значения. Отредактировать файлы можно, например, с помощью подключения по FTP/SFTP.
В файл /директория_сайта/bitrix/php_interface/after_connect.php
под уже имеющимися строками и до символов ?>
добавьте:
$DB->Query("SET sql_mode=''");
$DB->Query("SET innodb_strict_mode=0");
В файл /директория_сайта/bitrix/php_interface/after_connect_d7.php
под уже имеющимися строками и до символов ?>
добавьте:
$connection->queryExecute('SET sql_mode=""');
$connection->queryExecute("SET innodb_strict_mode=0");
После этого проверка Bitrix пройдет успешно.
Выполнение агентов на cron
Уведомление:
Замечание: Агенты выполняются на хитах, рекомендуется перенести их выполнение на cron
Это замечание некритично. В Битрикс предусмотрен внутренний планировщик задач (агентов). Данное замечание влияет на то, насколько точно по времени сработают запланированные задачи. Грубо говоря, скрипты сайта выполняются, только когда его страницы кто-то посещает. Если нет посещений, то и таймер работать не будет. Cron позволяет полностью решить проблему с планированием задач.
Решение:
Чтобы перенести работу непериодических агентов (и передачу почты) на Сron, необходимо установить константу BX_CRONTAB_SUPPORT.
Для этого добавьте в файл /директория_сайта/bitrix/php_interface/dbconn.php
строку:
define('BX_CRONTAB_SUPPORT', true);
Затем нужно добавить задачу в Crontab. Это можно сделать инструментами вашей панели управления или с помощью cli.
Уведомление:
Ошибка! Не настроен запуск cron_events.php на cron
Эта ошибка может возникнуть, если в пункте выше вы только добавили константу, но не добавили задачу cron. Без настройки задачи в crontab будет остановлена часть агентов, в том числе с сайта перестанет отправляться почта. Письма будут накапливаться в очередь и отправляться по частям после устранения ошибки.
Решение:
Выполните приведенную выше инструкцию по добавлению задачи cron, и ошибка будет устранена.
Обязательные параметры PHP
Уведомление:
Ошибка! Значение max_input_vars должно быть не ниже 10000
Эта ошибка не влияет на работоспособность сайта напрямую, но может отразиться на работе с большими формами в административной панели. При работе с инфоблоками низкое значение параметра max_input_vars может вызвать проблемы с сохранением настроек, поэтому система выделяет эту ошибку как критическую.
Решение:
Необходимо добавить следующую строку в файл /директория_сайта/.htaccess
:
php_value max_input_vars 11000
Окно с неприятным текстом «Ошибка! innodb_strict_mode=ON, требуется OFF. Переменная sql_mode в MySQL должна быть пустая, текущее значение: NO_ENGINE_SUBSTITUTION» появляется, когда происходит проверка режима работоспособности работы базы данных в CMS Битрикс. Возможность проверить систему управления сайтом на наличие проблем появилась сравнительно недавно благодаря новой введенной опции в CMS Битрикс. С помощью этой опции можно также проверить:
работоспособность почтовой отправки электронных писем, связанной с веб-проектом;
работоспособность стека памяти;
работоспособность агентов на «cron»;
основные характеристики работы PHP;
и др.
Напомним, CMS Битрикс — это профессиональная коммерческая платформа для создания и управления сайтами от российских разработчиков. Эта CMS подходит для разного вида сайтов любой сложности. Так как продукт коммерческий и стоит недешево, основная масса его клиентов — это средний и крупный бизнес. На этой CMS разрабатывают крупные интернет-магазины, социальные сети, сайты финансовых организаций и др. CMS Битрикс отличается высокой надежностью, но даже у этой системы иногда возникает ошибка «innodb_strict_mode=ON, требуется OFF». Подробнее об этой ошибке и как ее исправить читайте ниже по статье.
Ошибка «innodb_strict_mode=ON, требуется OFF»
Ошибка «innodb_strict_mode=ON, требуется OFF» связана с некорректной работой базы данных сайта. Она входит в категорию «критических», потому что может полностью заблокировать отправку запросов к базе данных. А для большинства сайтов блокировка запросов к базе данных означает временную недееспособность или полную остановку всего ресурса. Остановка ресурса — это потеря потенциальных и существующих клиентов, поэтому исправлять эту ошибку нужно сразу же, как только появилось соответствующее сообщение.
Как исправляется ошибка «innodb_strict_mode=ON, требуется OFF»
Исправить эту ошибку можно двумя способами. Вариант первый:
Пройти по пути в основном меню административной панели хостинга, которое располагается слева: «Управление файлами сайта-Структура сайта-Файлы и папки». Пункты меню могут называться по-другому, так как название пунктов зависит от вашего хостинга.
Там необходимо отыскать расположение документов по пути «/bitrix/php_interface/».
В этом расположении нужно найти и открыть, чтобы отредактировать, документ: «after_connect_d7.php».
Вставить в самый низ этого документа небольшое сообщение: «$connection- >queryExecute(«SET innodb_strict_mode=0»);».
Сохранить изменения.
В этом же расположении найти другой документ, чтобы его отредактировать — «after_connect.php».
В самый низ этого документа нужно вставить следующее сообщение: «$DB- >Query(«SET innodb_strict_mode=0»)».
Сохранить изменения.
После этого можно проверить работоспособность веб-проекта еще раз. Ошибка «innodb_strict_mode=ON, требуется OFF» должна исчезнуть. Бывает такое, что первый вариант исправления ошибки не регулирует ситуацию. Тогда нужно попробовать второй вариант исправления, который подразумевает внесение изменений в конфигурацию CMS Битрикс, а именно в документ, который отвечает за работу с базой данных. Для этого:
Войдите в панель управления вашего хостинга.
Отыщите месторасположение файлов вашего сайта. Обычно они расположены в пункте меню «Файловый менеджер» или «Файлы сайта». Название пункта зависит от вашего хостинга.
Найдите соответствующий файл «z_bx_custom.cnf», который расположен по пути: «/etc/mysql/conf.d/z_bx_custom.cnf».
В самый низ этого документа необходимо вставить строчку: «innodb_strict_mode=OFF».
Сохраните изменения.
Заключение
Ошибка «innodb_strict_mode=ON, требуется OFF» решается одним из описанных выше способов. Решать ее необходимо максимально быстро, так как ее возникновение чревато блокировкой сайта.