Как исправить ошибку «Error Establishing A Database Connection» в WordPress

Это – один из худших кошмаров для владельца веб-сайтов. Вы вводите URL-адрес вашего сайта… однако вас приветствует не ваша главная страница, а нечто другое. Вместо этого вы видите пустой экран. Вне зависимости от того, по какой ссылке вы перешли, вас встречают зловещие слова «Error establishing a database connection».

error-establishing

Чем дольше ваш сайт будет лежать, тем больше трафика вы потеряете. А это означает потерянных подписчиков, клиентов, а также упущенный доход. Однако что вообще привело к такой ошибке? Что она означает? И, что самое важное, как исправить ее, чтобы вернуть свой сайт в нормальное состояние как можно быстрее?

В этой статье мы расскажем вам, что означает это сообщение об ошибке, что может вызывать его, а также посмотрим, как найти корень зла и исправить его.

Что означает «Error Establishing a Database Connection»?

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

В целом, всякий раз, когда страница загружается на вашем сайте, она создается «на лету». Код PHP используется для того, чтобы получить доступ к базе данных MySQL и получить всю информацию, которая требуется для создания страницы. Одни PHP-запросы получают заголовок записи, другие – захватывают имя автора, третьи – берут дату публикации и т.д.

Вернемся к нашему сообщению об ошибке: «Error establishing a database connection». Оно означает, что по каким-то причинам PHP-код не смог соединиться с базой данной MySQL, чтобы получить информацию, которая требовалась для создания страницы.

Именно по этой причине на экране с ошибкой красуется лишь одно сообщение. Если вы не можете подключиться к базе данных, вы не знаете, что выводить на экран; нет никакой доступной информации о вашем сайте.

Что приводит к этой ошибке?

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

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

  1. Ваши учетные данные для входа в БД являются неверными. Ваша база данных использует отдельный логин и пароль. Если эти данные были недавно изменены, ваш сайт не сможет подключиться к БД, используя старые учетные данные.
  2. Ваша база данных была повреждена. Привести к такому печальному исходу могут самые разные причины, начиная с установки некачественного плагина и заканчивая ударом молнии в сервер (правда, это не самый распространенный вариант).
  3. Сервер, на котором расположена ваша БД, в данный момент не работает. Сервер с вашей базой данных может выйти из строя из-за каких-либо проблем или ошибок на стороне хостинг-компании. Также он может «лежать» из-за того, что на ваш сайт обрушился большой поток трафика, который сервер просто не смог обработать.

Таким образом, учитывая все возможные ситуации, как мы можем справиться с возникшей проблемой?

Решение проблем с «Error Establishing a Database Connection»

1. Определяем, с чем произошла ошибка.

Появляется ли эта ошибка только при обращении к wp-admin или же ваш сайт полностью лежит? А может, у вас другая ситуация: ваш сайт не работает, но при попытке входа вы видите несколько иную ошибку: «One or more database tables are unavailable. The database may need to be repaired»?

Все это говорит о том, что ваша база данных была повреждена.

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

Вы можете найти wp-config в корневой папке вашей сборки WordPress. Получить к ней доступ можно через cPanel: выберите File Manager и перейдите к папке, в которой у вас установлен WordPress.

Как только вы откроете wp-config, добавьте к нему следующую строку в самый конец файла:

define( 'WP_ALLOW_REPAIR', true );

Эта строка позволит вам оптимизировать и восстановить вашу базу данных. Перейдите по ссылке: www.yourwebsite.com/wp-admin/maint/repair.php (вместо yourwebsite.com введите реальный URL-адрес).

wordpress-database-repair

Вы должны увидеть страницу, показанную выше, с двумя возможностями восстановления – «repair» и «repair and optimize». Учтите, что оптимизация займет дополнительное время.

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

Если ошибка пропала, вы можете закрыть wp-config и вернуться к нормальной работе с сайтом.

Если все это вам не помогло, давайте перейдем ко второму этапу восстановления сайта.

2. Проверяем учетные данные БД в wp-config

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

Удивлены, каким образом ваши учетные данные, работавшие ранее, перестали это делать? Смена хостинг-компании, изменение имени БД или пользовательской информации может привести к тому, что ваш wp-config файл будет содержать старые данные.

У вас может быть по-прежнему открыт файл wp-config, оставшийся еще с прошлого шага. В противном случайте войдите в cPanel хостинга и откройте File Manager. Перейдите к папке, в которую вы устанавливали WordPress, и найдите в ней файл, названный wp-config.php. Откройте его для редактирования.

Вы увидите учетные данные для вашей базы данных – обычно они расположены в самом верху файла. Выглядят они обычно следующим образом:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
 
/** MySQL database username */
define( 'DB_USER', 'username_here' );
 
/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );
 
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

Как вы можете видеть, здесь есть несколько информационных разделов, которые требуются WordPress для доступа к вашей БД:

  1. Название БД (DB_NAME)
  2. Логин для входа (DB_USER)
  3. Пароль для входа (DB_PASSWORD)
  4. Хост базы данных (DB_HOST)

Если какое-либо из этих значений будет некорректным, WordPress не сможет подключиться к базе данных.

Проверить базу данных вне WordPress можно при помощи PHPMyAdmin – инструмента, который используется для редактирования базы данных MySQL. PHPMyAdmin включен во многие тарифные планы хостингов, и вы можете найти его в консоли cPanel.

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

Как только вы войдете в PHPMyAdmin, вы увидите список баз данных на вашем сервере. Щелкните по той из них, которая будет соответствовать названию БД в файле wp-config (значение DB_NAME).

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

После щелчка по названию базы данных вы увидите основной экран, содержащий названия таблиц вашей БД. Чтобы убедиться в том, что это – корректная БД, вы можете найти таблицу под названием wp_options и щелкнуть по опции Browse рядом с ней. Вы должны увидеть название вашего сайта, URL, а также все основные настройки. Теперь вы знаете, ту ли базу данных вы открыли. Если нет, то настройте ее должным образом в wp-config.

Давайте теперь проверим логин и пароль.

Есть несколько способов проверить их. Я предложу вам два варианта.

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

Вариант 1. Тестируем существующие учетные данные.

Создаем файл в каталоге WordPress – пусть он называется testconnection.php (название не важно, главное чтобы он имел расширение .php). Вставляем в него следующий код:

<?php
$testConnection = mysql_connect('localhost', 'root', 'password');
if (!$testConnection) {
die('Error: ' . mysql_error());
}
echo 'Database connection working!';
mysql_close($testConnection);
?>

Как только вы создадите этот файл, просто перейдите по соответствующему URL в браузере (к примеру, site.com/testconnection.php). Вы увидите либо сообщение об удачном соединении, либо ошибку с детальной информацией.

Если логин и пароль не работают, мы можем создать нового пользователя.

Вариант 2. Создаем нового пользователя для БД (новый логин и пароль).

Сделать это мы можем с помощью другого инструмента в cPanel, который называется MySQL® Databases. Переходим к нему, затем прокручиваем вниз до заголовка: MySQL Users: Add New User. Задаем имя пользователя, а также сложный пароль. Щелкаем — Create User. Теперь прокручиваем до заголовка Add User To Database, и выбираем ваше новое имя пользователя и вашу базу данных WordPress, после чего щелкаем по Add. Обновляем файл wp-config, введя в него ваше новое имя пользователя и пароль.

Теперь название вашей БД, имя пользователя и пароль являются корректными. Остался только DB_HOST.

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

3.Все еще появляется ошибка?

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

Источник: www.elegantthemes.com/blog

Блог про WordPress
Комментарии: 23
  1. Рамазан

    Вы правы это как кошмар для блоггера. С моим блогоом было тоже самое. Оказалось что проблема связано с сервером хостинга. Но теперь все отлично :)

  2. Анатолий

    Мне помог 2 вариант, СПАСИБО

  3. Елена

    Спасибо, проблему решить помогли. А вот другая осталась: картинки не отображаются на сайте, хотя в админке WP есть. Может подскажите, в чем может быть проблема?

    1. Дмитрий (автор)

      Попробуйте загружать новые картинки. Будут ли они выводиться на сайте? Возможно, что это глюки только со старыми изображениями.

  4. Артем

    Сегодня у себя на блоге обнаружил такую же проблемму

  5. Роман

    Спасибо, помогла ваша статья, а то в админку не мог зайти.

  6. Павел

    Вот уж благодарю!!! Помог второй способ!

  7. Ванопрун

    Фух, спасибо огромное)
    Открыл файл wp-config.php и оказалось пароль не совпадает с БД из под ISPmanager, где случайно его поменял не задумавшись.

  8. Начинающий

    Помог вариант 2, спасибище!!!

  9. Александр

    Спасибо большое за дельный совет, исправил полетевшую БД за 5 минут!!! Очень признателен за статью!

  10. андрей

    хочу в игру бой с тенью зайти мне пишут ошибку, database error,как ее исправить?

    1. Дмитрий (автор)

      Скорее всего просто сайт работает с перебоями.

  11. Ольга

    Дмитрий здравствуйте.
    У меня почему-то ни один скрипт с вашего сайта не работает. Ругается на синтаксические ошибки. попыталась создать testconnection.php у меня ругается на синтаксические ошибки.
    я убрала цифры, которые сбоку 01, 02 и т.д но все равно ругается.
    syntax error, unexpected ‘Connection’ (T_STRING)

    и еще в вашей статье «Как перенести работающий WordPress-сайт на локальный сервер» есть запрос к базе данных. phpmyadmin тоже ругается на синтаксис

    1. Дмитрий (автор)

      Ольга, спасибо за комментарий.

      В коде была ошибка.

      Нужно писать вот так:

      $testConnection = mysql_connect(‘localhost’, ‘root’, ‘password’);

      1. Ольга

        Да, все сработало! спасибо большое.

  12. Марат

    Спасибо тебе дорогой друг все исчез !!!

  13. favil

    почему часто отключается мой сайт помогите мне пожалюсто,

  14. Дмитрий (автор)

    Думаю, что проблема у вас с хостингом. Уточните у службы поддержки.

  15. Алексей

    У меня сейчас на одном из сайтов такая фиговина, который я разместил на другом хостинге. Лучше бы Бегету (это не реклама) доплатил и перешел на тариф с размещением нескольких сайтов, но во мне как обычно проснулись еврейские корни и я решил хостинг подешевле взять. На Beget у меня такого кошмара еще ни разу не было. Так я уже несколько хостингов за эту неделю перепробовал, причем я еще ни одному из них не платил, только тестовый период решил поюзать сначала и на каждом из них вечно какие-нибудь проблемы. И на последнем, который я сейчас решил попробовать, как раз и вылезла вот эта бабайка. Что можно сказать о таких хостингах, если даже во время тестовых периодов появляются разные проблемы?

    1. Дмитрий (автор)

      С хостингом экономить — себе дороже обычно. Тоже натыкался на ужасные хостинги. И да, тестовый период обычно как маркер качества.

  16. ЗОНК

    Была такая проблема однажды из-за нехватки свободного места на диске! Так что на это тоже обращайте внимание.

  17. Эдвард

    Здравствуйте, Дмитрий! Мне тоже иногда досаждает эта ошибка. Вот сегодня решил зайти к себе на площадку, а доступа нет и красуется именно эта надпись. Я пользуюсь VDS и у меня особенно на более слабой и дешёвой расценке часто останавливалась служба mariadb. Я перешёл на более дорогую расценку с более мощными свойствами обслуживающего устройства. Вроде как неполадка устранилась. А сегодня опять она возникла, хоть и включен самозапуск этой службы при остановке. Но он не сработал. Пришлось вручную запускать. Полдня так всё висело: сотовый у меня отключен, а о доступности моей площадки меня оповещает по почте служба UpTimeRobot. Но это не совсем быстро. Такие вот дела. :)

    1. Дмитрий (автор)

      Добрый день! Да, бывало подобное на слабых тарифах хостинга.
      Я потом тоже переходил на более мощные, и проблема в итоге исчезала. Даже при пиковой нагрузке все работало как часы.

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

Получать новые комментарии по электронной почте.