#Что означает ошибка
General Error SQL ERROR [ mysqli ] Could not connect to database
Сообщение phpBB «General Error: SQL ERROR [mysqli]… Could not connect» означает, что форум не может подключиться к базе данных: неверные данные в config.php, остановлена служба MySQL/MariaDB, превышены лимиты подключений, закончилось место на диске или база повреждена.
Проверка проводится по порядку: настройки, служба базы данных, место на диске, таблицы.
Перед ремонтом таблиц сделайте резервную копию.
phpBB хранит всё в базе данных, а параметры подключения — в config.php. При нарушении любого звена форум показывает ошибку.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Неверные данные в config.phpИмя БД, пользователь, пароль, хост. | Ошибка после переноса или смены пароля. | Сверьте значения с панелью хостинга. |
| Сервер базы данных недоступенОстановлен или перегружен. | Другие сайты хостинга также недоступны. | Проверьте у хостера, подождите. |
| Повреждены таблицыСбой записи. | Ошибки при операциях с форумом. | Восстановите таблицы (REPAIR TABLE) или из копии. |
Кэш или права на каталогиНельзя писать в cache/. | Ошибки при открытии страниц. | Очистите кэш, проверьте права. |
#Пошаговое решение
- Проверьте config.phpОткройте
config.phpв корне phpBB через панель хостинга либо SSH и сверьте значения$dbhost,$dbname,$dbuserс действующими настройками БД. Пароль не выводите в браузер/отчёт. Убедитесь, что это конфигурация именно запрошенного форума, а не соседнего сайта. - Проверьте подключение к MySQLЕсли есть консольный доступ и разрешённая учётная запись БД, проверьте подключение
mysql -h реальный_хост -u реальный_пользователь -p имя_базыс подстановкой из конфигурации. Если здесь получен отказ 1045, проверяйте реквизиты и права; если нет маршрута/сокета — проверяйте службу и адрес. Не сбрасывайте root-пароль ради приложения. - Проверьте службуНа своём сервере проверьте
systemctl status mysqlилиmariadb, затем журналы нужной службы. На виртуальном хостинге такой доступ может отсутствовать — тогда используйте индикатор состояния базы в панели или обратитесь к поддержке. Не перезапускайте базу, если ею пользуются другие сайты, без согласованного окна. - Проверьте место и памятьВ терминале сервера выполните
df -h,df -iи просмотрите сообщения о нехватке памяти. Если раздел БД заполнен, защищайте резервные копии и ищите источник заполнения вместо удаления файлов InnoDB. Исправив проблему ресурса, проверяйте подключение снова. - Отремонтируйте таблицыЕсли в
General Errorявно указана повреждённая таблица, определите тип движкаSHOW TABLE STATUSи сохраните дамп базы.mysqlcheck --auto-repairне универсален для InnoDB и может быть неподходящим; для InnoDB обычно требуется отдельная диагностика и восстановление из копии. Проверьте доступность разделов форума после ремонта и сохраните новые журналы.
#Если не помогло
Перед работами с базой сделайте резервную копию. Если ошибка возникла после обновления, проверьте совместимость расширений и версий PHP.
#Проверка настроек и службы
Откройте config.php форума и проверьте $dbhost, $dbname, $dbuser, $dbpasswd. Проверьте подключение вручную: mysql -u ПОЛЬЗОВАТЕЛЬ -p -h ХОСТ ИМЯ_БАЗЫ. Проверьте службу: sudo systemctl status mysql (или mariadb). После перезапуска сервера служба иногда не стартует: sudo systemctl start mysql.
#Место, лимиты и ремонт
Проверьте место (df -h) и память (free -m): при нехватке MySQL падает. Проверьте лимит подключений: SHOW VARIABLES LIKE 'max_connections';. Для ремонта таблиц используйте mysqlcheck --auto-repair -u root -p ИМЯ_БАЗЫ или в phpMyAdmin «Восстановить таблицу». Журнал MySQL: sudo tail -n 50 /var/log/mysql/error.log.
#После переноса или обновления
При переносе на другой сервер обновите настройки подключения и проверьте права пользователя: GRANT ALL ON база.* TO 'пользователь'@'localhost';. При обновлении на новую версию PHP убедитесь, что драйвер mysqli включён (php -m | grep mysqli). Очистите кэш форума: удалите содержимое каталога cache/ (кроме .htaccess и index.htm).