Это – один из худших кошмаров для владельца веб-сайтов. Вы вводите URL-адрес вашего сайта… однако вас приветствует не ваша главная страница, а нечто другое. Вместо этого вы видите пустой экран. Вне зависимости от того, по какой ссылке вы перешли, вас встречают зловещие слова «Error establishing a database connection».
Чем дольше ваш сайт будет лежать, тем больше трафика вы потеряете. А это означает потерянных подписчиков, клиентов, а также упущенный доход. Однако что вообще привело к такой ошибке? Что она означает? И, что самое важное, как исправить ее, чтобы вернуть свой сайт в нормальное состояние как можно быстрее?
В этой статье мы расскажем вам, что означает это сообщение об ошибке, что может вызывать его, а также посмотрим, как найти корень зла и исправить его.
Что означает «Error Establishing a Database Connection»?
Для начала давайте посмотрим на то, как WordPress отображает ваш сайт, и тогда станет ясно, почему эта ошибка настолько разрушительная. WordPress написан на PHP и MySQL. Вся информацию, которая составляет ваш сайт, хранится в базе данных MySQL, а PHP используется в WordPress для сохранения и получения этой информации из базы данных.
В целом, всякий раз, когда страница загружается на вашем сайте, она создается «на лету». Код PHP используется для того, чтобы получить доступ к базе данных MySQL и получить всю информацию, которая требуется для создания страницы. Одни PHP-запросы получают заголовок записи, другие – захватывают имя автора, третьи – берут дату публикации и т.д.
Вернемся к нашему сообщению об ошибке: «Error establishing a database connection». Оно означает, что по каким-то причинам PHP-код не смог соединиться с базой данной MySQL, чтобы получить информацию, которая требовалась для создания страницы.
Именно по этой причине на экране с ошибкой красуется лишь одно сообщение. Если вы не можете подключиться к базе данных, вы не знаете, что выводить на экран; нет никакой доступной информации о вашем сайте.
Что приводит к этой ошибке?
В то время как само сообщение об ошибке является достаточно ясным, причины, отвечающие за его появление, зачастую не совсем понятны.
Есть много разных причин, почему ваш сайт может иметь проблемы с подключением к вашей базе данных, однако их обычно можно разбить по трем категориям:
- Ваши учетные данные для входа в БД являются неверными. Ваша база данных использует отдельный логин и пароль. Если эти данные были недавно изменены, ваш сайт не сможет подключиться к БД, используя старые учетные данные.
- Ваша база данных была повреждена. Привести к такому печальному исходу могут самые разные причины, начиная с установки некачественного плагина и заканчивая ударом молнии в сервер (правда, это не самый распространенный вариант).
- Сервер, на котором расположена ваша БД, в данный момент не работает. Сервер с вашей базой данных может выйти из строя из-за каких-либо проблем или ошибок на стороне хостинг-компании. Также он может «лежать» из-за того, что на ваш сайт обрушился большой поток трафика, который сервер просто не смог обработать.
Таким образом, учитывая все возможные ситуации, как мы можем справиться с возникшей проблемой?
Решение проблем с «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-адрес).
Вы должны увидеть страницу, показанную выше, с двумя возможностями восстановления – «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 для доступа к вашей БД:
- Название БД (DB_NAME)
- Логин для входа (DB_USER)
- Пароль для входа (DB_PASSWORD)
- Хост базы данных (DB_HOST)
Если какое-либо из этих значений будет некорректным, WordPress не сможет подключиться к базе данных.
Проверить базу данных вне WordPress можно при помощи PHPMyAdmin – инструмента, который используется для редактирования базы данных MySQL. PHPMyAdmin включен во многие тарифные планы хостингов, и вы можете найти его в консоли cPanel.
Предупреждение: Будьте аккуратны при работе с PHPMyAdmin, поскольку этот инструмент ведет прямую работу с базой данных.
Как только вы войдете в PHPMyAdmin, вы увидите список баз данных на вашем сервере. Щелкните по той из них, которая будет соответствовать названию БД в файле wp-config (значение DB_NAME).
Не видите ни одной базы данных? В таком случае обратитесь к вашему хостингу, поскольку, скорее всего, проблема связана с вашим сервером.
После щелчка по названию базы данных вы увидите основной экран, содержащий названия таблиц вашей БД. Чтобы убедиться в том, что это – корректная БД, вы можете найти таблицу под названием wp_options и щелкнуть по опции Browse рядом с ней. Вы должны увидеть название вашего сайта, URL, а также все основные настройки. Теперь вы знаете, ту ли базу данных вы открыли. Если нет, то настройте ее должным образом в wp-config.
Давайте теперь проверим логин и пароль.
Есть несколько способов проверить их. Я предложу вам два варианта.
- Вы можете создать простой .php файл для тестирования того, сможете ли вы подключиться к вашей базе данных с учетными данными из файла wp-config
- Вы можете создать нового пользователя с паролем, и обновить файл 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
Вы правы это как кошмар для блоггера. С моим блогоом было тоже самое. Оказалось что проблема связано с сервером хостинга. Но теперь все отлично :)
Мне помог 2 вариант, СПАСИБО
Спасибо, проблему решить помогли. А вот другая осталась: картинки не отображаются на сайте, хотя в админке WP есть. Может подскажите, в чем может быть проблема?
Попробуйте загружать новые картинки. Будут ли они выводиться на сайте? Возможно, что это глюки только со старыми изображениями.
Сегодня у себя на блоге обнаружил такую же проблемму
Спасибо, помогла ваша статья, а то в админку не мог зайти.
Вот уж благодарю!!! Помог второй способ!
Фух, спасибо огромное)
Открыл файл wp-config.php и оказалось пароль не совпадает с БД из под ISPmanager, где случайно его поменял не задумавшись.
Помог вариант 2, спасибище!!!
Спасибо большое за дельный совет, исправил полетевшую БД за 5 минут!!! Очень признателен за статью!
хочу в игру бой с тенью зайти мне пишут ошибку, database error,как ее исправить?
Скорее всего просто сайт работает с перебоями.
Дмитрий здравствуйте.
У меня почему-то ни один скрипт с вашего сайта не работает. Ругается на синтаксические ошибки. попыталась создать testconnection.php у меня ругается на синтаксические ошибки.
я убрала цифры, которые сбоку 01, 02 и т.д но все равно ругается.
syntax error, unexpected ‘Connection’ (T_STRING)
и еще в вашей статье «Как перенести работающий WordPress-сайт на локальный сервер» есть запрос к базе данных. phpmyadmin тоже ругается на синтаксис
Ольга, спасибо за комментарий.
В коде была ошибка.
Нужно писать вот так:
$testConnection = mysql_connect(‘localhost’, ‘root’, ‘password’);
Да, все сработало! спасибо большое.
Спасибо тебе дорогой друг все исчез !!!
почему часто отключается мой сайт помогите мне пожалюсто,
Думаю, что проблема у вас с хостингом. Уточните у службы поддержки.
У меня сейчас на одном из сайтов такая фиговина, который я разместил на другом хостинге. Лучше бы Бегету (это не реклама) доплатил и перешел на тариф с размещением нескольких сайтов, но во мне как обычно проснулись еврейские корни и я решил хостинг подешевле взять. На Beget у меня такого кошмара еще ни разу не было. Так я уже несколько хостингов за эту неделю перепробовал, причем я еще ни одному из них не платил, только тестовый период решил поюзать сначала и на каждом из них вечно какие-нибудь проблемы. И на последнем, который я сейчас решил попробовать, как раз и вылезла вот эта бабайка. Что можно сказать о таких хостингах, если даже во время тестовых периодов появляются разные проблемы?
С хостингом экономить — себе дороже обычно. Тоже натыкался на ужасные хостинги. И да, тестовый период обычно как маркер качества.
Была такая проблема однажды из-за нехватки свободного места на диске! Так что на это тоже обращайте внимание.
Здравствуйте, Дмитрий! Мне тоже иногда досаждает эта ошибка. Вот сегодня решил зайти к себе на площадку, а доступа нет и красуется именно эта надпись. Я пользуюсь VDS и у меня особенно на более слабой и дешёвой расценке часто останавливалась служба mariadb. Я перешёл на более дорогую расценку с более мощными свойствами обслуживающего устройства. Вроде как неполадка устранилась. А сегодня опять она возникла, хоть и включен самозапуск этой службы при остановке. Но он не сработал. Пришлось вручную запускать. Полдня так всё висело: сотовый у меня отключен, а о доступности моей площадки меня оповещает по почте служба UpTimeRobot. Но это не совсем быстро. Такие вот дела. :)
Добрый день! Да, бывало подобное на слабых тарифах хостинга.
Я потом тоже переходил на более мощные, и проблема в итоге исчезала. Даже при пиковой нагрузке все работало как часы.