Błąd połączenia z bazą danych WordPress, jak to naprawić
Zamiast strony pojawia się krótki komunikat: „Error establishing a database connection", czyli błąd połączenia z bazą danych. Cała strona znika, panel administracyjny też przestaje działać, a Ty nie wiesz, czy to drobiazg, czy właśnie straciłeś dane. Uspokójmy od razu: w większości przypadków dane są całe, a problem leży w połączeniu między WordPressem a bazą, nie w samej treści. Poniżej tłumaczymy, co ten błąd znaczy, od czego się zaczyna i jak go naprawić krok po kroku.
Co oznacza „Error establishing a database connection"
WordPress trzyma całą treść (wpisy, strony, ustawienia, użytkowników) w bazie danych MySQL. Przy każdym wejściu łączy się z nią, używając danych zapisanych w pliku wp-config.php. Ten komunikat oznacza, że połączenie się nie udało: albo dane logowania do bazy są błędne, albo serwer bazy nie odpowiada, albo sama baza jest uszkodzona. Strona nie ma skąd wziąć treści, więc pokazuje goły błąd.
Najczęstsze przyczyny
- Błędne dane dostępowe w wp-config.php. Zmienione hasło do bazy, nazwa bazy albo użytkownika, a plik
wp-config.phpwciąż ma stare. Bardzo częste zwłaszcza po migracji strony na inny serwer. - Serwer bazy danych przeciążony lub chwilowo padł. Przy skoku ruchu albo na współdzielonym hostingu baza potrafi odmówić kolejnych połączeń. Wtedy błąd bywa migający: raz jest, raz go nie ma.
- Przekroczony limit połączeń do bazy. Tani hosting ogranicza liczbę jednoczesnych połączeń. Po jego wyczerpaniu każde kolejne wejście dostaje ten błąd.
- Uszkodzona baza danych. Nagłe wyłączenie serwera albo błąd zapisu może uszkodzić tabele. WordPress łączy się, ale nie potrafi odczytać danych.
- Ślad włamania lub przeciążenia przez boty. Masowe, złośliwe zapytania potrafią zatkać bazę tak, że wygląda to jak awaria.
Szybka diagnoza w 30 sekund
Sprawdź jedną rzecz: czy panel administracyjny pod adresem /wp-admin pokazuje ten sam błąd, czy inny. Jeśli w panelu widzisz komunikat w stylu „baza danych może wymagać naprawy", to znak, że baza jest uszkodzona (przejdź do naprawy tabel). Jeśli i strona, i panel pokazują identyczny błąd połączenia, problem jest najczęściej w danych dostępowych albo po stronie serwera bazy.
Jak naprawić krok po kroku
- Sprawdź dane w wp-config.php. W pliku
wp-config.phpporównajDB_NAME,DB_USER,DB_PASSWORDiDB_HOSTz tym, co pokazuje panel hostingu w sekcji baz danych. Po migracjiDB_HOSTbywa inny niżlocalhost, hosting podaje właściwą wartość. To najczęstsza i najszybsza naprawa. - Zapytaj, czy serwer MySQL działa. Jeśli dane się zgadzają, sprawdź w panelu hostingu status bazy albo zapytaj wprost supportu, czy serwer MySQL nie jest przeciążony lub w awarii. Jeśli błąd miga, to najczęściej to.
- Spróbuj naprawy tabel. Gdy podejrzewasz uszkodzoną bazę, dodaj do
wp-config.phpliniędefine('WP_ALLOW_REPAIR', true);, a następnie wejdź na adrestwojadomena.pl/wp-admin/maint/repair.phpi uruchom naprawę. Po zakończeniu koniecznie usuń tę linię z pliku, bo strona naprawy jest wtedy dostępna publicznie. - Sprawdź obciążenie i boty. Jeśli baza pada pod obciążeniem, zerknij w statystyki ruchu. Nagły skok z jednego kraju albo na jeden adres to często boty. Ograniczenie ich (albo warstwa ochronna) zdejmuje presję z bazy.
- Odtwórz bazę z kopii. Jeśli tabele są poważnie uszkodzone, najczystszym wyjściem jest przywrócenie bazy z kopii zapasowej. Jeśli robisz regularne kopie, to kwestia kilku minut.
Jeśli po naprawie strona wstaje, ale działa wolno albo baza jest zaśmiecona, warto ją potem uporządkować, o tym piszemy w osobnym wpisie o czyszczeniu bazy WordPress.
Kiedy zadzwonić po pomoc
Jeśli dane w wp-config.php się zgadzają, hosting twierdzi, że baza działa, a błąd zostaje, albo tabele są uszkodzone i nie masz świeżej kopii, to moment, żeby nie eksperymentować dalej na żywej stronie. Zajmujemy się dokładnie takimi awariami, gdy strona nie działa: diagnozujemy bezpłatnie, pracujemy na kopii i odzyskujemy stronę bez ryzyka, że przy okazji zniknie treść.
Najczęstsze pytania
Czy przy tym błędzie tracę treści strony?
Zwykle nie. Najczęstsza przyczyna to błędne dane dostępowe albo przeciążony serwer bazy, a nie utrata danych. Nawet przy uszkodzonych tabelach treść zwykle da się odzyskać przez naprawę bazy lub kopię zapasową.
Błąd pojawił się zaraz po przeniesieniu strony na nowy serwer. Dlaczego?
Bo po migracji zmieniają się dane dostępowe do bazy, najczęściej DB_HOST i hasło. Plik wp-config.php wciąż wskazuje na stary serwer. Wpisanie nowych danych z panelu hostingu zwykle rozwiązuje sprawę od ręki.
Raz błąd jest, raz strona działa. O co chodzi?
Migający błąd to niemal zawsze przeciążenie: serwer bazy albo limit połączeń odmawia obsługi przy większym ruchu, a przy mniejszym znowu działa. Rozwiązaniem jest odciążenie bazy albo mocniejszy plan hostingu.
Co robi „naprawa bazy danych" i czy jest bezpieczna?
Wbudowana naprawa WordPressa próbuje odbudować uszkodzone tabele MySQL. Jest bezpieczna, ale ponieważ na czas naprawy strona repair.php jest dostępna bez logowania, trzeba po wszystkim usunąć wpis WP_ALLOW_REPAIR z pliku konfiguracyjnego.