Просмотров: 19699
Дата последнего изменения: 28.05.2022
Сложность урока:
4 уровень — сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
5
Иногда возникает ситуация, когда сайт перестает отвечать, и посетителям отображается пустая страница. В этом случае рекомендуется открыть файл bitrix/php_interface/dbconn.php и установить значение параметра $DBDebug = true;
<?
define("DBPersistent", true);
$DBType = "mysql";
$DBHost = "localhost:31006";
$DBLogin = "root";
$DBPassword = "";
$DBName = "bsm_demo";
$DBDebug = true;
$DBDebugToFile = false;
set_time_limit(60);
define("BX_FILE_PERMISSIONS", 0644);
define("BX_DIR_PERMISSIONS", 0755);
@ini_set("memory_limit", "64M");
?>
В результате будет получен код ошибки, содержащий, как правило, названия поврежденных таблиц базы данных.

Запуск утилиты perror.exe с кодом ошибки (файл perror.exe хранится в каталоге mysql/bin) позволяет получить описание ошибки по ее коду:
![]()
Примечание: Для ошибки с кодом 28 выводится следующее описание:

Данное сообщение означает, что на диске, где установлена база данных, недостаточно места для ее работы.
Если речь идет о повреждении базы данных, то рекомендуется воспользоваться встроенным инструментом системы для проверки и восстановления базы данных. Использование скрипта проверки и восстановления базы данных позволит оперативно восстановить работу сайта.
Обратите внимание на следующее:
- Скрипт проверки и восстановления базы данных может быть использован только для MySQL с типом таблиц
MyISAM
Для таблиц типа InnoDB неактуальна сама проблема поломки таблиц, поэтому для них нет инструмента.
. - Скрипт проверки запускается из административного раздела сайта Настройки -> Инструменты -> Проверка БД:

В случае, если повреждены таблицы статистики и нет возможности перейти в административный раздел, сбор статистики может быть временно отключен с помощью параметра
?no_keep_statistic_LICENSE-KEY=Y. В параметре указывается лицензионный ключ сайта. -
Существует возможность использования скрипта проверки и восстановления базы данных без перехода в административный раздел.
Для этого при обращении к странице восстановления необходимо указать два параметра: имя (login) и пароль (password) на доступ к базе данных. Например: http://www.mysite.ru/bitrix/admin/repair_db.php?login=DB_Login&password=DB_Password. По умолчанию значения данных параметров хранятся в файле
/bitrix/php_interface/dbconn.php.
Проблема:
На экран выводится ошибка:
MySQL Query Error: ….. [Out of memory restart server and try again (needed 65528 bytes)]
Решение:
Необходимо увеличить объем памяти в настройках MySQL.
Рекомендуется использовать следующие параметры MySQL, задавая их в конфигурационном файле MySQL my.cnf:
key_buffer = 128K max_allowed_packet = 16M table_cache = 4 sort_buffer_size = 128K read_buffer_size = 128K read_rnd_buffer_size = 128K net_buffer_length = 128K thread_stack = 128K
После изменения параметров необходимо будет перезагрузить MySQL.
Ошибки подключения к базе в Битриксе. Свой текст ошибки
Если в настройках установлен вывод ошибок, то при возникновении ошибок базы данных Битрикс выводит на страницу сайта SQL запрос, который закончился ошибкой. . Это небезопасно, потому что в таком случае посетители сайта могут понять, как устроена база данных и выяснить слабые места сайта. Поэтому рекомендуем сделать страницу-заглушка, которая будет показываться вместо ошибки.
Попробуем принудительно вызвать SQL ошибку на сайте, чтобы посмотреть как она выглядит. Для этого на любой странице сайта напишем код, который обращается к базе данных:
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
global $DB;
$sql = 'SELECT * FROM';
$DB->Query($sql);
?>
Если загрузить страницу с таким кодом, то битрикс сообщит об ошибке и будет выведена только половина страницы до возникшей ошибки. Сообщение об ошибке будет выглядеть так:

Можно такой вывод ошибки на собственную страницу, на которой можно написать, к примеру, обращение к пользователям сайта. Для создания такой страницы необходимо в папке сайта /bitrix/php_interface/ создать файл PHP файл с названием dbquery_error.php.
Рекомендуем ознакомиться со статьёй «Загрузка файлов на сайт с помощью FileZilla», в которой описан процесс работы с программой, которая может загрузить файл с вашего компьютера на сервер с сайтом. А так же с одной из статей. описывающих редактор файлов на сервере: «Средство разработки: Notepad++» или «Средство разработки: Atom»
После создания dbquery_error.php, вставьте в этот файл следующий код для обработки ошибки. В начале кода должны содержаться функции, которые очистят буфер вывода, иначе сообщение об ошибке все равно будет выведено:
<?php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$str = ob_get_contents(); // здесь находится сообщение об ошибке
ob_clean(); // очищаем буфер вывода
?>
Ой! В нашей базе данных случилась ошибка. Пожалуйста, напишите нам на "мэйл@адрес.ru", если видите это сообщение. Спасибо!
Первая строчка в примере if(!defined(«B_PROLOG_INCLUDED») … die(); не позволит скрипту выполниться, если пользователь перейдёт по адресу ваш_сайт.ru/bitrix/php_interface/dbquery_error.php. Код будет выполняться, только если он вызван из другого скрипта.
Чтобы иметь оперативную связь можно запрограммировать автоматическую отсылку мэйла на адрес техподдержки сайта внутри файла dbquery_error.php. Потому что если этот файл будет исполнен, то это значит, что ошибка уже есть на сайте. Поэтому предлагаем дописать предыдущий пример, добавив код отправки мэйла:
<?php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$str = ob_get_contents(); // здесь находится сообщение об ошибке
ob_clean(); // очищаем буфер вывода
// посылаем отчет об ошибке нам
global $APPLICATION;
$curPage = $APPLICATION->GetCurPage(); // адрес страницы сайта, на которой возникла ошибка
$eol = "n";
$to = 'мэйла@адрес_техподдержки.ru'; // кому отправлять мэйл
$subject = 'Ошибка MySql ' . date("Y-m-d H:i:s"); // дата возникновения ошибки
$message = 'Ошибка MySql:' . $str . $eol;
$message = 'Возникла на странице: ' . $curPage . $eol;
$message = wordwrap($message, 900, $eol); // ограничение ширины строки в письме
$head = array();
$head[] = "MIME-Version: 1.0";
$head[] = "Content-type: text/plain; charset=UTF-8";
$head[] = "From: мэйл@адрес_сайта.ru <мэйл@адрес_сайта.ru>"; // от кого отправлять мэйл
$head[] = "Subject: " . $subject;
$a = mail($to, $subject, $message, implode("rn", $head));
?>
Ой! В нашей базе данных случилась ошибка. Пожалуйста, напишите нам на "мэйл@адрес.ru", если видите это сообщение. Спасибо!
В этом примере замените адрес «Кому» и «От кого» для правильной отправки мэйла.
Была ли эта статья полезна?
Есть вопрос?
Закажите недорогой хостинг
Заказать
всего от 290 руб
Блог «Дивасофт»
23 января 2017, Михаил
В файле bitrix/.settings.php
<?php
'exception_handling' =>
array (
'value' =>
array (
'debug' => true,
'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE & ~E_DEPRECATED,
'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING,
'ignore_silence' => false,
'assertion_throws_exception' => true,
'assertion_error_type' => 256,
'log' =>
array (
'settings' =>
array (
'file' => 'bitrix/err.log',
'log_size' => 1000000,
),
),
),
'readonly' => false,
)
?>
Логи будут в файле bitrix/err.log
В этой статье мы расскажем, из-за чего возникает ошибка «DB query error, please try later» в Bitrix и как её исправить на виртуальном хостинге.
Почему возникает ошибка
Ошибка DB query error, please try later возникает на CMS Битрикс.
Также встречаются варианты:
- Mysql connect error [localhost]: (2002) No such file or directory (400),
- DB query error,
- Got error 28 from storage engine.
Эта проблема связана с базой данных сайта: к ней поступает слишком много обращений — больше, чем сервер БД может обработать.
Вот несколько распространённых причин этой ошибки:
- не хватает дискового пространства на хостинге. В Битрикс встроено автоматическое резервное копирование. Эта опция создаёт резервные копии в папке /bitrix/backup/ и постепенно занимает место на диске. Чтобы решить проблему, необходимо удалить старые резервные копии;
- повреждена база данных MySQL. В этом случае нужна резервная копия БД: восстановите копию с датой, когда сайт работал корректно;
- неверные данные для подключения к БД. Настройки подключения к базе данных хранятся в файле /bitrix/php_interface/dbconn.php. Если указаны неверные логин, пароль или название базы данных, сайт не может к ней подключиться. Из-за этого возникает ошибка.
Как включить отображение ошибок через панель управления
Чтобы понять, чем именно вызвана ошибка, нужно посмотреть её полное описание на сайте. Для этого включите debug-режим.
Debug-режим (режим отладки) — режим, который используют разработчики для проверки кода. Он позволяет увидеть полный текст ошибки и исправить её.
Для этого:
- 1.
-
2.
Перейдите в раздел Менеджер файлов:
-
3.
Перейдите в папку php_interface и дважды кликните по файлу dbconn.php:
-
4.
В блоках $DBDebug и $DBDebugToFile замените параметр «false» на «true» и нажмите Ok:
-
5.
При переходе на сайт вы увидите текст ошибки. Он выделен красным цветом:
Как включить отображение ошибок через SSH-подключение
-
1.
Подключитесь к серверу по SSH.
-
2.
Выполните команду:
vim ~/www/domain.ru/bitrix/php_interface/dbconn.phpГде domain.ru — корневая папка сайта.
-
3.
Кликните клавишу i, чтобы включить режим редактирования, затем в полях $DBDebug и $DBDebugToFile замените параметр «false» на «true»:
Чтобы выйти из режима редактирования, нажмите Esc. Затем введите команду :qw и нажмите Enter:
Как освободить место для работы БД через панель управления
Для того чтобы освободить место на хостинге, нужно очистить папку /bitrix/backup/. Для этого:
-
1.
Войдите в панель управления ISPmanager. Если внешний вид вашей панели управления отличается от представленного в инструкции, кликните в левом нижнем углу «Старый интерфейс».
-
2.
Перейдите в папку /bitrix/backup/. Выделите файлы, которые вам не нужны, и нажмите Удалить.
-
3.
Чтобы подтвердить удаление, нажмите Ok.
Как освободить место для работы БД через SSH-подключение
-
1.
-
2.
Выполните команду:
cd ~/www/domain.ru/bitrix/backup/Где domain.ru — корневая папка вашего сайта.
-
3.
Чтобы удалить ненужные файлы, выполните команду:
rm domain.ru_20210512_104800_full_da85bdfa.tar domain.ru_20210512_104813_full_1463208a.tar domain.ru_20210512_104925_full_cdf5d6e0.tar
Как изменить данные для подключения к БД через панель управления
Проблема с подключением к базе данных может возникнуть, если в файле /bitrix/php_interface/dbconn.php указаны некорректные логин, пароль или имя базы данных. Чтобы изменить настройки подключения:
- 1.
-
2.
Перейдите в раздел Базы данных:
-
3.
Кликните по базе данных и выберите Пользователи:
-
4.
Кликните по пользователю базы данных и выберите Изменить:
-
5.
Кликните на значок «глаз», чтобы увидеть пароль. Проверьте имя пользователя и пароль, затем нажмите Отмена:
DB Query Error что это значит
-
6.
Перейдите в раздел Главное — Менеджер файлов:
-
7.
Откройте папку php_interface и дважды Кликните по файлу dbconn.php:
-
8.
Заполните поля:
- $DBLogin — укажите имя пользователя базы данных,
- $DBPassword — введите пароль пользователя БД,
- $DBName — укажите имя базы данных.
Затем нажмите Ok.
-
9.
Битрикс хранит настройки подключения не только в файле dbconn.php, но и в файле .settings.php. Перейдите в папку /bitrix/ и дважды кликните по файлу .settings.php:
-
10.
Заполните поля:
- database — укажите имя базы данных,
- login — введите логин пользователя БД,
- password — укажите пароль пользователя БД.
Затем нажмите Ok:
Как изменить данные для подключения к БД через SSH-соединение
Перед изменением данных проверьте имя БД, логин и пароль. Чтобы изменить данные для подключения:
- 1.
-
2.
Выполните команду:
vim ~/www/domain.ru/bitrix/php_interface/dbconn.phpГде domain.ru — корневая директория сайта.
-
3.
Кликните клавишу i, чтобы включить режим редактирования. Заполните поля:
- $DBLogin — укажите имя пользователя БД,
- $DBPassword — введите пароль пользователя базы,
- $DBName — укажите название базы данных.
Затем нажмите Esc, чтобы выйти из режима редактирования, введите команду :qw и нажмите Enter.
-
4.
Настройки подключения к базе данных хранятся ещё в одном файле — .settings.php. Чтобы открыть его, выполните команду:
vim ~/www/domain.ru/bitrix/.settings.phpГде domain.ru — корневая папка сайта.
-
5.
Нажмите на клавишу i, чтобы включить режим редактирования. Заполните поля:
- database — введите имя базы данных,
- login — укажите имя пользователя БД,
- password — введите пароль пользователя БД.
Чтобы выйти из режима редактирования, нажмите Esc. Затем введите команду :qw и нажмите Enter.
Если вы выполнили рекомендации из статьи, но на сайте сохраняется ошибка — обратитесь в техническую поддержку.
Views: 23051
Last Modified: 09.07.2021
When a database query error occurs, the following error message is displayed:

The visual aspect of the message is defined by the contents of the file /bitrix/php_interface/dbquery_error.php.
Situations may happen when a site denies to reply and returns an empty page to visitors. In this case, open the file bitrix/php_interface/dbconn.php containing the database connection parameters, and set the parameter: $DBDebug = true;
<?
define("DBPersistent", true);
$DBType = "mysql";
$DBHost = "localhost:31006";
$DBLogin = "root";
$DBPassword = "";
$DBName = "bsm_demo";
$DBDebug = true;
$DBDebugToFile = false;
set_time_limit(60);
define("BX_FILE_PERMISSIONS", 0644);
define("BX_DIR_PERMISSIONS", 0755);
@ini_set("memory_limit", "64M");
?>
This will cause the error message to be printed. The message usually contains names of damaged tables.

Run perror.exe (can be found in mysql/bin) with the error code to get the error description:
![]()
Note:
The error 28 displays the following description:
![]()
This means that the disk on which the database is installed is out of free space.
If the database damage is the case, you are recommended to use the built-in database check and repair tool. This will allow you to restore the site functionality in the shortest possible time.
Note!
- The standard database check and repair tool only works with the MyISAM tables of MySQL.
- The check script starts from the administrative section of the site Settings > Tools > System Administration > Database Check:


If the statistics tables are damaged and you cannot open the Control Panel, you can disable gathering statistics by supplying the parameter
?no_keep_statistic_LICENSE-KEY=Yon the URL (substituteLICENSE-KEYwith your license key). -
There is a possibility to use the check script and recover the database without the need to go to the administrative section.
To do so, supply the database access login and password on the URL. For example: http://www.mysite.com/bitrix/admin/repair_db.php?login=DB_Login&password=DB_Password. By default, the database access parameters are stored in /bitrix/php_interface/dbconn.php.
Problem:
The following error appears on the screen:
MySQL Query Error: ….. [Out of memory restart server and try again (needed 65528 bytes)]
Solution:
Memory size must be increased in MySQL settings.
The following MySQL parameters should be used and entered in the MySQL configuration file my.cnf:
key_buffer = 128K max_allowed_packet = 16M table_cache = 4 sort_buffer_size = 128K read_buffer_size = 128K read_rnd_buffer_size = 128K net_buffer_length = 128K thread_stack = 128K
MySQL will have to be reloaded after you change the parameters.