WordPress návody

Chyba “Error Establishing a Database Connection”

Autor příspěvku Martin H.

Poměrně běžná chyba, se kterou se setkali snad všichni provozovatelé webových stránek. Jedná se o problém ve spojení s databázovým serverem. V případě WordPressu jde o potíže s připojením k MySQL databázi, kterou používá. Podíváme se na několik možných příčin této neoblíbené chyby.

Poznámka: než uděláte jakékoliv změny v databázi, ujistěte se, že máte zálohu.

Možné příčiny chyby

Příčin problémů ve spojení s databází může být několik, nejčastěji se však jedná o nesprávné přihlašovací údaje k databázi. Může jít ale i o poškození databáze, nedostatečná práva uživatele nebo celkovou nefunkčnost databázového serveru. Projdeme si základní postup vyřešení této chyby.

Objevuje se chyba i pro /wp-admin/?

Nejprve se podívejte, zda se chyba projevuje stejně pro front-end (to, co vidí uživatelé) i back-end (administrace) webu. Pokud je chyba stejná pro obě části, můžete přejít níže. Pokud je ale chyba jiná, například “One or more database tables are unavailable…”, může jít o poškození samotné databáze a musíte učinit několik kroků k její opravě.

Opravu databáze zahájíte přidáním následující hodnoty do souboru wp-config.php:
define('WP_ALLOW_REPAIR', true);

Jakmile tak učiníte, přejděte na adresu:
http://www.VASEDOMENA.cz/wp-admin/maint/repair.php.

Oprava databáze WordPressu

K provedení opravy nemusíte být přihlášení do WordPress administrace, protože při poškození databáze by to mnohdy ani nebylo možné. Po dokončení opravy tedy nezapomeňte řádek z wp-config.php zase smazat! Na stránce oprav můžete nechat WordPress i optimalizovat databázi pro svižnější chod webu (ozvláště u větších magazínů s tisícovkami článků). Pro stisknutí tlačítka pro opravu se WordPress pokusí najít chyby v tabulkách databáze a automaticky je opravit.

dbrepair

Pokud tento pokus selhal a chyba se stále objevuje, čtěte dál a snad společně dojdeme k vyřešení některým z dalších popisovaných způsobů.

Kontrola souboru wp-config.php

Wp-config.php je zřejmě nejdůležitějším souborem v celé instalaci WordPressu. Právě zde nastavujete přihlašovací údaje k databázi. Pokud měníte heslo nebo uživatelské jméno pro databázi na vašem hostingu, musíte tak učinit i v souboru wp-config.php. Ujistěte se, že máte v configu uvedené správné údaje pro přihlášení, uvedené jsou na následujících řádcích:

define('DB_NAME', 'jmeno-databaze');
define('DB_USER', 'prihlasovaci-jmeno');
define('DB_PASSWORD', 'heslo-k-databazi');
define('DB_HOST', 'localhost');

Pamatujte, že DB_HOST nemusí vždy být localhost, záleží i na nastavení vašeho hostingu. Může se stát, že překlad localhostu na IP adresu nebude fungovat a připojení k databázi selže právě z tohoto důvodu. Proto někdy pomůže nahradit localhost za IP adresu vašeho databázového serveru, která je obvykle shodná s IP adresou hostingu. Nemusí tomu ale tak být (někdo používá pro databáze jiný server než pro data webu)! Proto se ujistěte, že máte DB_HOST nastavený správně. Zkontrolujte také možné překlepy ve všech údajích.

Jestliže je všechno správně a chyba setrvala, bude zřejmě problém na straně serveru.

Kontrola MySQL serveru

Občas dojde k chybě spojení s databází, když je váš web pod náporem velkého množství návštěvníků. V podstatě jde o to, že databázový server už nedokáže vyřídit všechny požadavky, tak některé prostě odmítne (chyba se zobrazí pouze některým návštěvníkům). Nejlepší možnost je v tomto případě kontaktovat přímo poskytovatele hostingu a zeptat se ho na stav databázového serveru a případně se domluvit na řešení.

Pokud si chcete otestovat funkčnost databázového serveru sami, máte několik možností.

Nejprve vyzkoušejte, zda další stránky na stejném serveru mají ten samý problém s připojením k databázi. Jestli ano, bude chyba na straně serveru. Nemáte-li jiné weby na stejném serveru, připojte se do administrace hostingu a zkuste se přihlásit do phpMyAdmina.

Jestliže se vám to nepodaří, nemusí to ještě nutně znamenat, že je celý MySQL server dole. Může jít o nedostatek práv pro daného uživatele. V tomto případě existuje šance, že se vám zobrazí chyba typu “Access denied for user…”. Pokud se tak stane, zkuste použít jiného databázového uživatele s patřičnými právy (např. u VPS si můžete sami vytvořit nového uživatele). V případě, že používáte webhosting, kde nemáte možnost použít jiného databázového uživatele, budete muset kontaktovat poskytovatele hostingu, aby záležitost prošetřil.

Další možností, jak otestovat připojení k databázi je vytvořit si jednoduchý php skript pro test:

Soubor můžete nazvat například testdb.php, vložte do něj uvedený kód a nahrajte ho na hosting. Po načtení php souboru na webu (adresa např. www.vasweb.cz/testdb.php) byste měli vidět buď hlášku “Úspěšně připojeno” nebo naopak “Nelze se připojit” včetně případné MySQL chyby.

V případě, že spojení proběhne bez problému, zkuste ještě jednou pečlivě překontrolovat veškeré údaje v souboru wp-config.php. V opačném případě bude problém rozsáhlejší a nezbyde než kontaktovat zákaznickou podporu hostingu.

Několik pokusů poslední záchrany:

1. Zkontrolujte záznam siteurl v tabulce wp_options v databázi
2. Zkuste se připojit s root uživatelem databáze (má všechna práva)
3. Zkuste přepsat soubory jádra WordPressu (adresáře wp-admin a wp-includes)
4. Smažte všechny údaje databáze z wp-config.php a napište je znovu (občas se stane, že čím déle na něco koukáte, tím spíše překlep přehlédnete, tak je lepší to napsat celé znovu)

Tolik k chybě připojení k databázi. Máte další řešení, problémy a poznámky? Budeme rádi za reakce v komentářích.

O autorovi

Martin H.

Hobby programátor, IT nadšenec a nepoučitelný kritik.

2 komentáře

Zanechat komentář

WordPress školení pro začátečníky a mírně pokročilé (Praha 17.9.2020)

Získejte více informací o WordPress!

Připojte se do našeho emailového seznamu a nenechte si ujít informace, novinky a návody ze světa WordPressu.

Úspěšně jste se zapsali do našeho newsletteru. Děkujeme!

Tomáš Cirkl

Tomáš Cirkl

WordPress specialista

Blog WPlama.cz píši už více než 5 let. O WordPress přednáším a pořádám školení. Pro své klienty vytvářím a spravuji webové stránky.