Awarie

„Error establishing a database connection” — co to znaczy

Ten błąd oznacza, że strona nie dogaduje się z bazą danych. W siedmiu przypadkach z dziesięciu powód jest banalny. Sprawdź go w tej kolejności.

Komunikat Error establishing a database connection na białym tle

Jedno zdanie na środku pustej strony: Error establishing a database connection. Czasem po polsku: „Błąd nawiązywania połączenia z bazą danych”.

Ten komunikat jest wyjątkowo uczciwy — mówi dokładnie to, co się stało. WordPress trzyma wszystkie treści w bazie danych: wpisy, strony, ustawienia, użytkowników, zamówienia. Same pliki na serwerze to tylko silnik. Kiedy silnik nie może sięgnąć po dane, nie ma z czego zbudować strony.

Zła wiadomość: pada cała witryna razem z panelem, więc nie zalogujesz się, żeby cokolwiek poprawić. Dobra: powód jest zwykle prozaiczny i da się go znaleźć w kilka minut.

Najpierw ustal, czy to Ty, czy hosting

Zanim zaczniesz cokolwiek edytować, odpowiedz na jedno pytanie: czy coś się zmieniło?

Jeśli nic nie robiłeś, a strona działała jeszcze rano — najprawdopodobniej problem jest po stronie serwera. Serwer bazy danych bywa przeciążony albo chwilowo wyłączony. Sprawdź stronę statusu swojego hostingu i inne strony na tym samym koncie. Jeśli padły wszystkie, nie masz czego naprawiać — trzeba napisać do dostawcy.

Jeśli przenosiłeś stronę, zmieniałeś hasło do bazy albo edytowałeś wp-config.php — powód jest u Ciebie i czytaj dalej.

To rozróżnienie oszczędza najwięcej czasu. Widzieliśmy ludzi, którzy przez godzinę przepisywali dane dostępowe, podczas gdy hosting miał awarię MySQL.

Sprawdź dane dostępowe w wp-config.php

Statystycznie to najczęstsza przyczyna — zwłaszcza po migracji albo zmianie hostingu. Otwórz przez FTP plik wp-config.php w katalogu głównym i znajdź cztery linie:

define( 'DB_NAME', 'nazwa_bazy' );
define( 'DB_USER', 'uzytkownik' );
define( 'DB_PASSWORD', 'haslo' );
define( 'DB_HOST', 'localhost' );

Teraz porównaj je znak po znaku z tym, co widzisz w panelu hostingu w sekcji baz danych. Typowe wpadki:

  • Prefiks konta. Wiele hostingów dodaje go automatycznie, więc baza nazywa się konto_wordpress, a nie wordpress. To samo dotyczy użytkownika.
  • Hasło ze znakami specjalnymi. Jeśli zawiera $, apostrof albo cudzysłów, może rozwalić składnię PHP. Zmień hasło na dłuższe, ale bez egzotycznych znaków.
  • DB_HOST inny niż localhost. Część dostawców wymaga konkretnego adresu serwera bazy, na przykład mysql.twojhosting.pl albo 127.0.0.1:3307. To jest w dokumentacji hostingu.
  • Spacja przed lub po wartości. Niewidoczna, a psuje wszystko.

Po każdej zmianie w tym pliku zapisz go bez znacznika BOM i w kodowaniu UTF-8. Edytor Windowsa potrafi dopisać niewidoczne znaki na początku pliku, które wywalają PHP.

Sprawdź, czy użytkownik ma jeszcze uprawnienia

Zdarza się, że dane są poprawne, a połączenia nadal nie ma — bo użytkownik bazy stracił do niej dostęp. To typowe po przywracaniu konta z backupu albo po ręcznych zabawach w panelu.

W panelu hostingu wejdź w zarządzanie bazami i sprawdź, czy użytkownik z DB_USER jest przypisany do bazy z DB_NAME i ma pełne uprawnienia. Jeśli nie — przypisz go ponownie.

Możesz to też potwierdzić prostym plikiem testowym. Utwórz test-db.php w katalogu głównym:

<?php
$link = @mysqli_connect( 'localhost', 'uzytkownik', 'haslo', 'nazwa_bazy' );
if ( ! $link ) {
    die( 'Nie udało się: ' . mysqli_connect_error() );
}
echo 'Połączenie działa.';

Wejdź na twojadomena.pl/test-db.php. Zamiast ogólnego komunikatu WordPressa dostaniesz konkretny powód odmowy — na przykład „Access denied for user” albo „Unknown database”.

Usuń ten plik natychmiast po sprawdzeniu. Zostawiony na serwerze pokazuje dane dostępowe do bazy każdemu, kto zgadnie jego nazwę.

Kiedy baza jest uszkodzona

Jeśli panel działa, ale wyświetla komunikat o konieczności naprawy bazy, albo w logu widzisz „Table is marked as crashed”, dopisz w wp-config.php:

define( 'WP_ALLOW_REPAIR', true );

Potem wejdź na twojadomena.pl/wp-admin/maint/repair.php. Zobaczysz przycisk naprawy tabel. Ta strona nie wymaga logowania, więc po zakończeniu naprawy usuń dopisaną linię z konfiguracji.

Alternatywnie tabele naprawisz w phpMyAdmin: zaznacz wszystkie, a z listy na dole wybierz „Napraw tabelę”.

Czego nie robić

Nie przywracaj całej strony z backupu jako pierwszego kroku. Jeśli problem polega tylko na literówce w haśle, przywrócenie kopii cofnie Ci również wszystkie treści dodane od czasu jej wykonania. Naprawa konfiguracji trwa dwie minuty, przywracanie backupu — dużo więcej i z realną stratą.

Nie instaluj wtyczek „naprawiających bazę”, bo żadnej wtyczki nie uruchomisz, kiedy strona nie łączy się z bazą. To ślepa uliczka.

Nie zmieniaj prefiksu tabel w wp-config.php w nadziei, że pomoże. Jeśli tabele w bazie mają prefiks wp_, a w konfiguracji wpiszesz coś innego, WordPress uzna, że baza jest pusta, i zaproponuje nową instalację. Kliknięcie tego przycisku potrafi nadpisać dane.

Ile to zajmuje i kiedy zadzwonić

Jeśli powód to błędne dane dostępowe, naprawa to kwestia kilku minut. Uszkodzone tabele — zwykle do godziny. Awaria po stronie hostingu nie zależy od Ciebie w ogóle.

Warto poprosić o pomoc, gdy:

  • nie masz kopii zapasowej, a rozważasz operacje na bazie danych — to moment, w którym łatwo stracić treści bezpowrotnie,
  • w bazie widzisz tabele, których nie rozpoznajesz, albo w treściach wpisów pojawiły się obce linki. Wtedy problem jest większy niż połączenie i warto sprawdzić, czy strona nie została zhakowana,
  • to sklep, w którym w międzyczasie mogły wpaść zamówienia — przywracanie backupu bez ich zabezpieczenia oznacza utratę pieniędzy, nie tylko danych.

Przy okazji: jeżeli ta awaria zdarzyła Ci się po przenosinach na nowy serwer, przeczytaj też o błędzie 500. Po migracji często występują razem i mają wspólne źródło w konfiguracji.


Nie chcesz ryzykować przy bazie danych? Zajmiemy się tym — diagnoza bezpłatna, odpowiedź w ciągu dwóch godzin, naprawa od 120 zł netto za godzinę i płatność dopiero po wykonaniu. Przed każdą operacją na bazie robimy kopię.

  • baza danych
  • awaria
  • wp-config
  • hosting

Masz taką sytuację u siebie?

Diagnoza i wstępna wycena bezpłatne. Płacisz dopiero po wykonaniu — napisz albo zadzwoń, odpowiadamy do 2 godzin.