668 145 480 info@jacekjagusiak.pl

Jeśli już od jakiegoś czasu przemierzacie internet to nie raz na pewno spotkaliście się z tym błędem na stronach. Error Establishing a Database Connection jest błędem, który może być wywołany przez wiele różnych czynników. Dla początkujących użytkowników WordPressa na pewno jest przyczyną wielu frustracji, głównie gdy wywołany jest bez konkretnych powodów bez żadnych zmian przeprowadzonych ostatnio na stronie. Sam na swoich stronach spotkałem się z tym błędem wielokrotnie i raz nawet pojawiły się na mojej głowie nowe siwe włosy podczas walki i próby naprawienia szkód. W sumie zajęło mi to około 20 minut, ale wykryłem problem i go naprawiłem. Przeszukując sieć www znajdujemy różne przyczyny i metody naprawy. Ja zebrałem te najczęściej występujące i mam nadzieje, że dla wielu z Was będzie to przydatny artykuł.

Uwaga! Zanim przeprowadzicie jakąkolwiek zmianę na bazie danych to wykonajcie jej kopie zapasową.

 

Skąd ten błąd?

W skrócie, dostajecie ten błąd bo WordPress nie jest w stanie ustabilizować połączenia z bazą danych. A teraz jaki jest tego powód? Pierwszą przyczyną może być to, że dane do połączenia z bazą mogą być błędne, albo zmienione całkiem niedawno. To spowoduje, że baza danych w ogóle nie odpowie na pytania WordPressa o porcje danych.

[showmyads]

Kolejnym powodem może być to, że baza danych uległa uszkodzenia. Zobaczmy jednak jak sobie radzić z tymi problemami.

Czy błąd występuje również w Panelu Admina?

Pierwszą rzeczą jaką musicie zrobić to sprawdzić, czy problem występuje zarówno po stronie użytkownika, czyli po wejściu na witrynę i czy to samo dzieje się po zalogowaniu do paneli administracyjnego. Jeśli w obu przypadkach dostajemy błąd “Error establishing a database connection” to przechodzimy do kolejnego kroku.

Może się zdarzyć tak, że w obu miejscach pojawi się odmienny komunikat i po zalogowaniu do panelu dostaniemy informacje “One or more database tables are unavailable. The database may need to be repaired”, wtedy wystarczy wcisnąć przycisk „Repair database” i gotowe.
Możemy także załatwić to ręcznie edytując plik wp-config.php:

define('WP_ALLOW_REPAIR', true);

WP-config.php to prawdopodobnie najważniejszy plik w instalacji WordPressa. To tutaj mamy informacje odnośnie połączenia z bazą danych. Jeśli zmienimy dane do połączenie na root to i tutaj należy dokonać stosownych zmian. Dlatego ważne jest, aby co jakiś czas sprawdzać, czy dane w tym pliku są aktualne.

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

Pamiętajcie, że wartość w DB_Host nie zawsze musi być localhost, wszystko zależy od hostingu na jakim mamy stronę. Na popularnych platformach hostingowych zachowujemy tą nazwę, ale są wyjątki i przykładowo na MAMP mamy już adres IP z portem po dwukropku:

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

Sprawdź czy serwer MySQL działa poprawnie!

Często błąd „Error establishing database connection” związany jest z nadmiernym obciążeniem serwera i jak mamy spory ruch na stronie, a hosting mizerny to nie zdziwcie się jak zobaczycie go u siebie dosyć często. Strona wtedy zaczyna ładować się bardzo powoli, a niektórzy z odwiedzających nie zobaczą pożądanego artykułu, a jedynie ten błąd.

[showmyads]

Wyjściem w tej sytuacji może być telefon, albo rozmowa online z dostawcą usług hostingowych, w której zapytamy o dostępność i działanie serwera MySQL dla Naszego konta. Jeśli jednak samo zarządzamy serwerem powinniśmy sprawdzić kilka rzeczy. Zacznijmy od tego czy problem występuje również w tym samym czasie na innych stronach położonych na tym samym hostingu. Jeśli tak to masz odpowiedź – coś jest nie tak z serwerem MySQL. Jeśli nie to sprawdź czy możesz się z bazą połączyć przez phpMyAdmin. Jeśli jest wszystko oki to możliwe, że użytkownik nie ma wystarczających praw dostępu, co można sprawdzić wykonując niewielki test. Stwórzmy plik test.php, w którym wkleimy poniższy kod.

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

Oczywiście musicie uzupełnić plik danymi użytkownika jak username i password. Jeśli po jego wywołaniu połączenie zakończy się sukcesem to oznacza, że nie ma problemami z prawami dostępu i coś innego jest na rzeczy. Wróćmy do pliku wp-config i sprawdźmy jeszcze raz czy wszystko jest ok, czy nie ma zbędnych spacji przed i po haśle etc.

Z drugiej strony jeśli nie mogliśmy się połączyć z phpMyAdmin to coś jest zapewnie nie tak z serwerem. Możliwe jest że MySQL padło całkowicie. To również oznaczać może, że user nie ma wystarczajacych uprawnień do przeglądania bazy.

[showmyads]

[sociallocker]W moim przypadku z bazą MySQL było wszystko wporządku. Wszystkie strony działały niezawodnie oprócz jednej, z którą od dawna mam problemy. Kiedy próbowałem połączyć się z PhpMyAdmin to otrzymałem informację:

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

Skontaktowałem się z usługodawcą i szybko problem został rozwiązany. Jakimś cudem zmieniły się uprawnienia użytkownika bazy. Nie wiem jak to się stało, ale najwidoczniej musiał być jakiś powód zaistniałej sytuacji. Przywrócono uprawnienia i strona zaczęła działać jak dotychczas, bez żadnych problemów.[/sociallocker]

 

Uniwersalne rozwiązanie:

Pamiętajcie o jednym, rozwiązanie prezentowane poniżej może u Was nie zadziałać, więc robicie wszystko na własne ryzyko i nie zapomnijcie zrobić potrzebnych kopii zapasowych przed zastosowaniem jakichkolwiek zmian.
U wielu osób w naprawieniu problemu pomogło wklepanie zapytania SQL w phpMyAdminie:

UPDATE wp_options SET option_value='Adres_Twojej_Strony' WHERE option_name='siteurl'
1.8/5 - (5 votes)
1.8/5 - (5 votes)