error-establishing-database-connection

Как исправить ошибку соединения с базой данных на WordPress

Если вы провели в интернете достаточно долгое время, вы точно встречались с такой ошибкой хотя бы пару раз. Ошибка усталовления соединения с базой данных – одно из тех проклятий, которое может возникнуть по разным причинам. Для новичка на WordPress это очень неприятно, особенно если ошибка всплывает сама по себе.

Подобная ошибка появилась и на нашем сайте. Потребовалось чуть больше 20-ти минут, чтобы найти и исправить проблему. Пока мы искали возможные причины, мы не обнаружили ни одной хорошей статьи, затрагивающей эту тему целиком. В данной статье мы покажем вам, как устранить ошибку соединения с базой данных на WordPress, собрав список решений в одном месте.

Примечание: прежде чем вносить изменения в базе данных, сделайте необходимые резервные копии.

 

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

Вкратце, такая ошибка появляется потому, что WordPress не может установить соединение с базой данных. Причины, почему он этого не может сделать, бывают разные. Может быть, ваши логин и пароль в базе данных введены неправильно или были изменены. Может быть, сервер вашей базы данных не отвечает. Может быть, файлы в базе данных были повреждены. Исходя из нашего опыта, большая часть ошибок происходит из-за разного рода ошибок сервера, хотя есть и другие факторы. Давайте разберемся, как эту проблему можно устранить.

 

Возникает ли такая же ошибка для /wp-admin/?

Первое, что вы должно сделать, это убедиться, что одна и та же ошибка возникает как во внешнем интерфейса сайта, так и во внутреннем (wp-admin). Если сообщение об ошибке одинаковое на обеих страницах – “Error establishing a database connection”, – то можете приступать к следующему шагу. Если же у вас возникает другая ошибка на wp-admin, например – “One or more database tables are unavailable. The database may need to be repaired”, – то вам нужно чинить вашу базу данных.

Вы можете это сделать, добавив следующую строку в ваш wp-config.php файл. Добавьте ее перед ‘That’s all, stop editing! Happy blogging’ в wp-config.php:

define('WP_ALLOW_REPAIR', true); 

Сделав это, вы сможете увидеть настройки на этой странице:

wprepairdb

Помните, что пользователю не нужно входить в систему, чтобы получить доступ к этой функции, пока присутствует данная дефиниция. Все потому, что ее главное предназначение – восстановить поврежденную систему данных. Пользователи зачастую не могут войти в систему, если база данных повреждена. Поэтому как только вы закончили чинить и оптимизировать вашу базу данных, обязательно удалите эту строку из wp-config.php.
Если это не разрешило проблему, или если вы не можете выполнить эту операцию, читайте далее – возможно у вас сработает другой способ.

 

Проверка файла WP-Config

WP-Config.php, пожалуй, самый важный файл во всем процессе инсталяции WordPress. Здесь вы можете установить параметры для WordPress и подключиться к базе данных. Если вы поменяли свой корневой пароль, или пароль базы данных, тогда вам нужно будет изменить и этот файл тоже. Сначала всегда проверяйте, нет ли изменений в вашем wp-config.php файле.

define('DB_NAME', 'database-name');
define('DB_USER', 'database-username');
define('DB_PASSWORD', 'database-password');
define('DB_HOST', 'localhost');

Помните, что значение DB_Host не всегда будет localhost. В зависимости от хостинга, оно будет разным. Для популярных хостингов, таких как HostGator, BlueHost, Site5, это localhost. Другие значения вы можете найти здесь.

Некоторые говорят, что им удалось устранить проблему, поменяв localhost на IP. Такая ситуация часто возникает при запуске WordPress на локальном сервере. Например на MAMP замена значения DB_Host на IP может сработать.

define('DB_HOST', '127.0.0.1:8889');

IP будут разными в зависимотсии от веб-хостинга.

Если в этом файле нет ошибок (проверьте на опечатки), то скорее всего что-то не так с сервером.

 

Проверьте ваш веб-хостинг (MySQL Server)

Часто эту ошибку соединения с базой данных замечают, когда на сайте растет трафик. Сервер вашего хостинга просто не может справиться с наплывом (особенно когда вы используете общий хостинг). Ваш сайт будет сильно тормозить и некоторым пользователям показывать ошибку. Поэтому лучшее, что вы можете сделать, это связаться с вашим хостинг провайдером по телефону или лайвчату, и спросить у них, работает ли ваш MySQL сервер.

Те из вас, кто сами хотят протестировать MySQL сервер, могут сделать следующее. Проверьте, присутствует ли такая же проблема на других сайтах того же сервера. Если там появляется такая же ошибка, то дело точно в MySQL сервере. Если у вас нет еще одного сайта на том же хостинг аккаунте, просто зайдите в cPanel и попробуйте получить доступ к phpMyAdmin и подключиться к базе данных. Если вы не можете подключиться, то вам нужно убедиться, имеет ли ваш пользователь базы данных соответствующее разрешение. Создайте новый файл под названием testconnection.php и вставьте в него следующий код:

<?php
$link = mysql_connect('localhost', 'root', 'password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

Убедитесь, что вы заменили юзернейм и пароль. Если вы подключились, значит ваш пользователь имеет нужное разрешение, и проблема в чем-то другом. Идите обратно в файл wp-config и проверьте, все ли в нем правильно (просмотрите еще раз на опечатки).

Если вы не можете подключиться к базе данных через phpMyAdmin, то можете быть уверены, что проблема в сервере. Это не значит, что ваш сервер MySQL упал. Возможно, у вашего пользователя нет соответсвующего доступа.

В нашем случае, сервер MySQL работал. Все наши сайты на сервере исправно работали, кроме одного. Когда мы попытались зайти в phpMyAdmin, появилась следующая ошибка:

#1045 – Access denied for user ‘foo’@’%’ (using password: YES)

Мы позвонили HostGator и их поддержка быстро нашла проблему. Каким-то образом доступ нашего пользователя был перезагружен. Не знаем, как это произошло, но очевидно это послужило причиной. Они восстановили доступ и нам удалось снова запустить сайт.

Поэтому если у вас появляется ошибка доступа при подключении к вашему phpMyAdmin или через результаты testconnection.php, сразу связывайтесь с вашим хостингом – они смогут это исправить.

 

Альтернативные решения

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

Один из пользователей рассказал о том, что его клиент наткнулся на ошибку, связанную с базой данных. Даже после восстановления базы данных ошибка не пропадала. Он многое перепробовал, но в конце концов проблема нашлась в url сайта. Он был изменен, в результате чего появилась эта ошибка. Он запустил SQL-запрос, зайдя в phpMyAdmin:

UPDATE wp_options SET option_value='YOUR_SITE_URL' WHERE option_name='siteurl'

Убедитесь, что вы поменяли YOUR_SITE_URL на действующий url, например: https://coma.lv. Опции wp_ будут зависеть от того, поменяли ли вы дефолтный префикс базы данных WordPress.

В его и нескольких других случаях это исправило ошибку.
Другой пользователь сказал, что ему удалось подключиться к базе данных с помощью testconnection.php, поэтому он поменял пользователя wp-config.php на корневого пользователя. WordPress стал прекрасно работать. Затем он вернул настройки обратно к пользователю базы данных. Он не мог понять, в чем была проблема, но думает, что в опечатке.

Еще один пользователь сообщила, что она убрала содержимое active_plugins из таблицы wp_options и отредактировала содержимое recently_edited. Судя по всему, это разрешило проблему.

Во многих источниках говорится, что пользователи смогли исправить эту ошибку просто скачав свежую версию WordPress.

Это очень неприятная ошибка. Что, из того что вы пробовали, сработало у вас? Мы с удовольствем расширим эту статью, чтобы упростить поиск решения для других.


Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [email protected], +371 29394520


3 ответы

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

Добавить комментарий