Просмотров: 21791
Дата последнего изменения: 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 руб
Views: 24171
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=Y
on the URL (substituteLICENSE-KEY
with 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.
Просмотров: 19714
Дата последнего изменения: 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.
В этой статье мы расскажем, из-за чего возникает ошибка «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: 23061
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=Y
on the URL (substituteLICENSE-KEY
with 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.
Рассказываем, почему появляется ошибка «DB query error» и как ее исправить на панели управления хостингом.
Ошибка «DB query error» связана с базой данных и обычно возникает после переноса проекта на другой хостинг, когда неверно указывают путь или ссылаются не на ту базу данных. Так выглядит ошибка в браузере при открытии сайта:
Другими вариантами возникновения «DB query error» могут быть:
-
Недостаточно свободного места на тарифе.
-
Ошибки в базе данных.
В статье расскажем, как исправить ошибку «DB query error» для сайтов на 1С-Битрикс из панели хостинга Reddock.
Недостаточно свободного места на тарифе
Для исправления ошибки на виртуальном хостинге перейдите в панель управления услугой.
На главной странице в блоке «Ограничения» в строке «Диск» проверьте, сколько осталось доступного места. Если доступного места достаточно, цвет текста будет зеленым. Если недостаточным — красным.
Для исправления ошибки на виртуальном или выделенном сервере перейдите в панель управления услугой под srv-admin. На главной странице в области «RED.Monitoring» отображены ресурсы сервера.
Проверка показала, что на тарифе закончилось дисковое пространство? Вы можете удалить лишние файлы или увеличить место на диске.
-
Для удаления файлов убедитесь, что они действительно не нужны для полноценной работы сайта. Примером таких файлов могут быть устаревшие резервные копии или кэш. Они удаляются в панели управления хостингом, в Менеджере файлов.
-
Для увеличения дискового пространства перейдите в личный кабинет и закажите дополнительные ресурсы для вашего тарифа.
Превышение максимально разрешенного количества подключений
Если на тарифе хостинга достаточно свободного пространства, возможно превышено максимально разрешенное количество подключений.
Это исправляется в панели управления перейдите в Главное (1) → Менеджер файлов (2). Выберите файл «dbconn.php» и нажмите «Изменить».
В строке «$DBDebug» замените «false» на «true», а после откройте ваш сайт. Если ошибки есть, то в браузере будет отображено сообщение ошибки mysql с кодом 1040.
Если ошибки превышения количества подключений нет, то причина может быть в большом количестве запросов к базе данных. Для сайтов на виртуальном хостинге нужно немного подождать, пока системный администратор устранит проблему. Для сайтов на виртуальном или выделенном сервере рекомендуем обратиться в нашу поддержку. Поможем исправить ошибку и вернуть доступ к сайту.
По всем вопросам будем рады помочь. Напишите нам — с радостью ответим. Способы связи:
-
через личный кабинет,
-
по почте support@reddock.ru,
-
по телефону +7 (495) 008-31-24 или +7 (351) 225-64-56.
Не пропустите новые материалы и обновления — подпишитесь на нас в любимой соцсети: Instagram, ВКонтакте или Facebook.
- После переноса вся публичная часть не видна без авторизации по логину и паролю
- При входе в административный интерфейс возникает сообщение об ошибке «Кодировка используемой вами базы данных MySql “utf8”, системе обновлений необходима кодировка “cp1251”. Обратитесь к администратору MySql для выполнения запроса alter database DATABASE_NAME default character set cp1251»
- Зависает переиндексация статических файлов сайта
- На любой странице сайта возникает ошибка:
The script encountered an error and will be aborted. To view extended error messages, enable this feature in .settings.php. - На любой странице сайта возникает ошибка: DB query error. Please try later.
- На сайте возникает ошибка: Mysql connect error [localhost, 127.0.0.1]: Can’t connect to local MySQL server through socket ‘/var/lib/mysqld/mysqld.sock’ (2) (400)
- Возникает ошибка любого MySQL запроса вида: MySQL Query Error: SELECT … FROM … [Got error 28 from storage engine]
После переноса вся публичная часть не видна без авторизации по логину и паролю
Если после переноса вы видите на главной странице вместо новостей форму для авторизации и все пункты меню отмечены значком замка:
… и после авторизации все отображается правильно — перейдите в административную панель Битрикс и пройдите по пути: Настройки (Settings) → Настройки продукта (System settings) → Сайты (Sites) → Список сайтов (List of sites), выберите ваш сайт и проверьте значение поля «Путь к корневой папке веб-сервера для этого сайта (Path to the web server root folder of this site)», скорее всего там указан неправильный путь.
Рекомендуется оставить это поле пустым если вы не используете многосайтовость на разных доменах.
Если у вас возникли сложности, не описанные здесь, напишите нам на support@vmco.ru
При входе в административный интерфейс возникает сообщение об ошибке «Кодировка используемой вами базы данных MySql “utf8”, системе обновлений необходима кодировка “cp1251”. Обратитесь к администратору MySql для выполнения запроса alter database DATABASE_NAME default character set cp1251»
По умолчанию все сервисы виртуальной машины VMBitrix работают в кодировке UTF-8. По сравнению с кодировкой CP1251 (Windows-1251) UTF-8 предоставляет большие возможности по хранению информации на различных языках, подробнее можно узнать в Wikipedia.
Если по каким-либо причинам вы не можете перейти на использование UTF-8 — выполните указанный запрос самостоятельно.
Для этого перейдите в административный раздел Битрикс и пройдите по пути Настройки (Settings) → Инструменты (Tools) → SQL запрос (SQL query), скопируйте и вставьте запрос из сообщения об ошибке и выполните его.
Этот запрос изменяет свойство используемой базы данных, не затрагивая сами данные, и, при необходимости, вы можете вернуть старое значение обратно.
Если у вас возникли сложности, не описанные здесь, напишите нам на support@vmco.ru
Зависает переиндексация статических файлов сайта
При попытке обновить поисковый индекс вашего сайта процесс зависает (длится очень долго и статус уже переиндексированных документов не обновляется). Если производить переиндексацию по отдельным модулям — зависание происходит только при выборе модуля «Статические файлы».
Для решения проблемы необходимо изменить параметры mbstring в файле /etc/php.ini:
mbstring.func_overload = 0 mbstring.internal_encoding = CP1251
и перезапустить web-сервер Apache чтобы новые параметры вступили в силу:
/etc/init.d/apache2 restart
Если у вас возникли сложности, не описанные здесь, напишите нам на support@vmco.ru
На любой странице сайта возникает ошибка:
The script encountered an error and will be aborted. To view extended error messages, enable this feature in .settings.php.
В новом ядре Битрикс, настройка параметров производится в файле bitrix/.settings.php (обратите внимание, что имя файла начинается с точки). Ранее, для этих задач использовался файл bitrix/php_interface/dbconn.php.
По умолчанию, Битрикс скрывает любые сообщения об ошибках, так как это значительно снижает уровень безопасности системы. Поэтому при возникновении любой ошибки вместо нее будет отображаться указанное выше сообщение.
Поэтому первым делом, необходимо войти на сервер (по SSH или sFTP) и отредактировать файл bitrix/.settings.php. В нем следует найти строчку:
'debug' => false,
и изменить значение параметра debug на true, то есть строка должна принять вид:
'debug' => true,
После этого, при обращении к странице с ошибкой, вы увидите полное сообщение об ошибке. После исправления ошибки, не забудьте вернуть параметр debug в изначальное значение.
Болле подробное описание всех параметров файла .settings.php есть на сайте разработчика.
Если у вас возникли сложности, не описанные здесь, напишите нам на support@vmco.ru
На любой странице возникает ошибка:
DB query error. Please try later.
Эта ошибка абсолютно аналогична описанной выше, но возникает только в старом ядре Битрикс. Для включения вывода полного сообшения об ошибке войдите на сервер (по SSH или sFTP) и отредактируйте файл bitrix/php_interface/dbconn.php. В нем найдите строчку:
$DBDebug = false;
и измените значение переменной $DBDebug на true, то есть строка должна принять вид:
$DBDebug = true;
После этого, при обращении к странице с ошибкой, вы увидите полное сообщение об ошибке. После исправления ошибки, не забудьте вернуть параметр $DBDebug в изначальное значение.
Если у вас возникли сложности, не описанные здесь, напишите нам на support@vmco.ru
На сайте возникает ошибка:
Mysql connect error [localhost, 127.0.0.1]: Can’t connect to local MySQL server through socket ‘/var/lib/mysqld/mysqld.sock’ (2) (400)
Данная ошибка означает, что сервер баз данных MySQL не доступен. Это может произойти в ряде случаев и зачастую требуется отдельный анализ ситуации для выявления точной причины. Но в большинстве случаев эта ошибка возникает из-за следующих проблем:
-
Нехватка оперативной памяти.
Если при разработке проекта не рассчитывалась большая нагрузка (со стороны пользователей или объема обрабатываемых данных), или при разработке была допущена ошибка, или параметры MySQL и Apache не оптимальны для проекта, то при всплеске активности может возникнуть переполнение оперативной памяти (RAM). В этом случае, операционная система, для поддержания собственной безопасности, принудительно завершает работу самого объемного процесса (для web-серверов это как правило именно MySQL).
В этом случае, в системном журнале /var/log/syslog и на консоли сервера (доступ к которой можно получить в панели управления vCenter) будет содержаться сообщение вида:
kernel: Out of memory: Kill process 1543 (mysqld) score 146 or sacrifice child
В этом случае, перезагрузите сервер, для освобождения памяти и восстановления работы всех сервисов. Затем привлеките разработчиков для оптимизации скриптов и запросов к БД, для предотвращения возникновения ошибки в будущем. Либо, если оптимизация не представляется возможной, увеличить тарифный план, тем самым увеличить объем доступной памяти.
-
Сервер не может стартовать из-за ошибки в конфигурации.
Как правило это может возникнуть после правки конфигурационного файла my.cnf или обновления системы. В этом случае, следует откатить изменения и перезапустить сервер или отдельно MySQL.
Если у вас возникли сложности, не описанные здесь, напишите нам на support@vmco.ru
MySQL Query Error: SELECT … FROM … [Got error 28 from storage engine]
Ошибка может содержать любой SELECT, INSERT или UPDATE запрос, но при этом обязательно заканчивается уточнением Got error 28 from storage engine. Причиной ошибки является переполнения жесткого диска (HDD)
В этом случае, войдите на сервер по SSH и выполните команду df -h:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 9.6G 9.2G 0 100% / tmpfs 250M 0 250M 0% /dev/shm /dev/sda1 118M 102M 9.1M 92% /boot
Основной раздел, в примере /dev/sda2 (так как он наибольший, что видно по колонке Size, и точка монтирования у него — корневая директория Mounted on /) используется на 100%
Для восстановления работы следует удалить более ненужные данные с диска или увеличить дисковое пространство.
Если у вас возникли сложности, не описанные здесь, напишите нам на support@vmco.ru
↑ вернуться к оглавлению
Ошибки подключения к базе в Битриксе. Свой текст ошибки
Если в настройках установлен вывод ошибок, то при возникновении ошибок базы данных Битрикс выводит на страницу сайта 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 руб
Обновлено 30.05.2018
Всех вновь приветствую на страницах своего блога, продолжаем заниматься уроками по 1С битрикс. На днях у меня один физический сервер переезжал в другой цод, товарищи из данного цода начали выполнять работы раньше и не дали возможности правильно потушить виртуальные машины. После переезда на одном из сайтов я увидел вот такую ошибку db query error please try later, давайте рассмотрим как ее решить и на будущее знать, что делать, на это у вас уйдет не более 5 минут.
Решаем ошибку db query error
Ранее у меня была установка bitrix на centos. Причин у данной ошибки может быть несколько и мы их рассмотрим все. Для начала приведу пример скриншота, как выглядит ошибка db query error please later, согласитесь не очень информативно.
Закончилось свободное место
Да такое бывает у вас может закончиться место на локальном диске и Centos просто не может уже куда либо писать, и вы ловите эту ошибку. Для того, чтобы проверить есть ли у вас свободное пространство вам необходимо подключиться к серверу по ssh протоколу и ввести вот такую команду.
Вы получите сводку по разделам, в моем примере места свободного достаточно.
Повредилась база данных Mysql
Вторая причина, уже посерьезнее и она кроется в том, что у вас поломалась табличка или если угодно база данных Mysql. Чтобы это выяснить вам, потребуется включить дебагер. Нам нужно включить один параметр вот в этом файле.
/bitrix/php_interface/dbconn.php
Для того, чтобы его отредактировать я вам советую зайти по sftp-ssh соединению, как это сделать я описывал в заметке Как зайти на ftp сервер хостинга. Единственно, что когда будите создавать подключение выбирайте sftp-ssh. Еще может так же помочь утилита WinSCP 5.7.6, делает она тоже самое. И та и другая просто файловые менеджеры.
Открываем этот файл и находим переменную $DBDebug = false; Изменяем ее значение на $DBDebug = true; Обратите внимание, что в этом файле есть такие полезные параметры как:
- $DBLogin > логин к базе данных
- $DBPassword > пароль
- $DBName > имя базы данных
В итоге теперь обновив страницу сайта я получил
MySQL Query Error: SELECT ID, SESSION_DATA FROM b_stat_session_data WHERE GUEST_MD5 = ’71dbd5e22cd7ad7065e17a7eb6940a59′ and DATE_LAST > DATE_ADD(now(), INTERVAL — 1440 SECOND) LIMIT 1 [Table ‘./edisclosure2009/b_stat_session_data’ is marked as crashed and last (automatic?) repair failed]
От сюда видно, что у меня по крошилась база данных edisclosure2009, значит ее нужно восстановить, не забудьте заново поставить $DBDebug = false, так как может дико тормозить сайт. Я для этого использую утилиту EMS SQL Manager for MySQL. Открываете ее и переходите в пункт Запустить SQL Manager for MySQL.
Имя хоста оставляете localhost, так и должно быть, ваш порт 3306 не должен светиться наружу. Далее указываем логин и пароль от базы данных и ставим галку Использовать туннелирование.
Задаем ip адрес или dns имя сервера к которому мы будем подключаться по ssh соединению, и указываем логин и пароль для доступа.
Указываем имя базы данных сайта на битриксе 1С. Я еще обычно ставлю опцию Автоподключение при запуске.
Теперь выбираете в левой части вашу базу данных и щелкаете по ней правым кликом, выбираете из контекстного меню Подключиться к базе данных.
Все теперь выбираете базу и из меню Службы выбираете Восстановление таблиц. После не долгой процедуры вы исправите ошибку db query error please try later на сайте 1С битрикс.
Если битрикс свежий и в папке /bitrix/ есть файл .settings.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' => true,
'assertion_throws_exception' => false,
'assertion_error_type' => 256,
'log' => array (
'settings' => array (
'file' => 'bitrix/modules/error.log',
'log_size' => 1000000,
),
),
),
'readonly' => true,
),