Come risolvere il famoso Error Establishing a Database Connection in WordPress

Se stai navigando sul web da un bel po’ di tempo, avrai visto questo errore almeno un paio di volte. Error Establishing a Database Connection è una di quelle maledizioni che potrebbero essere causate da molti motivi. Visto con gli occhi di un principiante di WordPress, questo potrebbe essere terribilmente frustrante, specialmente quando avviene senza aver cambiato assolutamente nulla. Mi sono imbattuto in questo problema già alcune volte e mi ci sono voluti sempre di più dei classici “5 minuti” per rilevare e risolvere il problema. Mentre facevo le ricerche per trovare le cause possibili, mi sono reso conto di non aver mai annotato tutti quei “classici” controlli da fare in queste situazioni.

Nota: Prima di apportare modifiche al database, assicuratevi di avere i backup sufficienti.

Perché questo errore?

In breve, hai trovato questo errore perché WordPress non è stato in grado di stabilire una connessione al database. Ora, il motivo per cui WordPress non stato in grado di stabilire una connessione al database può variare. Potrebbe essere che le credenziali di accesso al database siano sbagliate oppure siano state modificate. Potrebbe essere che il server che ospita il database sia offline o in manutenzione. Potrebbe essere che il database è stato danneggiato. Nella mia personale esperienza, la maggior parte delle volte questo errore si verifica a causa di una sorta di errore del server comunque ci potrebbero essere anche altri fattori. Diamo un’occhiata a come andare alla scoperta di questo problema.

Il problema si verifica anche per / wp-admin /?

La prima cosa da fare è assicurarsi che si stia ottenendo lo stesso errore sia sul front-end del sito, che sul back-end (wp-admin). Se il messaggio di errore (Error establishing a database connection) è lo stesso su entrambe le pagine, procedere al passaggio successivo. Se hai trovato invece un errore diverso sul wp-admin, per esempio qualcosa come One or more database tables are unavailable. The database may need to be repaired, allora hai bisogno di ripristinare il database.

Puoi farlo aggiungendo la seguente riga nel tuo wp-config.php file:

define ('WP_ALLOW_REPAIR', true);

Una volta fatto, potrai vedere le impostazioni per riparare il database visitando questa pagina:

http://www.nometuosito.com/wp-admin/maint/repair.php

Ricorda, l’utente non ha bisogno di essere loggato per accedere a questa funzionalità quando è impostato questo define. Questo perché il suo intento principale è quello di riparare un database danneggiato (gli utenti spesso non possono accedere quando il database è corrotto). Quindi una volta che hai finito la riparazione e l’ottimizzazione del database, assicurati di rimuovere questo istruzione dal tuo wp-config.php.

Se la riparazione non ha risolto il problema, o si hanno problemi durante l’esecuzione della riparazione continua a leggere questo articolo.

Controllo del file wp-config.php

Wp-config.php è probabilmente il singolo file più importante della vostra intera installazione di WordPress. Qui è possibile specificare i dettagli per collegare il vostro database a WordPress. Se si modifica la password di root, o la password utente del database, sarà necessario modificare queste password anche in questo file. La prima cosa che si dovrebbe sempre verificare è che tutti i nome utente e passwords siano identici anche nel tuo wp-config.php.

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

Ricordate che il vostro valore DB_HOST potrebbe non essere sempre localhost. A seconda del vostro host, potrebbe essere diverso. Per gli host popolari come HostGator, BlueHost, Site5, è localhost.

Alcuni tecnici suggeriscono che il problema può essere risolto sostituendo localhost con l’IP. Può essere comune vedere questo tipo di problema durante l’esecuzione di WordPress in un ambiente locale. Ad esempio, su MAMP, il valore DB_HOST quando cambiato nel’IP sembra lavorare.

define ('DB_HOST', '127 .0.0.1:8889 ');

L’indirizzo IP varia per i servizi online di web hosting.

Se tutte le informazioni in questo file sono corrette (assicuratevi di verificare la presenza di errori di battitura), allora è giusto dire che c’è qualcosa di errato sul lato server.

Controlla il tuo Web Host (MySQL Server)

Spesso si può notare questo Error establishing database connection quando il tuo sito riceve un sacco di traffico. Fondamentalmente, il vostro server non riesce a gestire il carico di richieste verso il database (specialmente quando si è in hosting condiviso). Il vostro sito risulterà molto lento e ad alcuni utenti potrebbe anche emettere l’errore. Quindi la cosa migliore da fare è alzare il telefono e chiamare il proprio fornitore di hosting chiedendo se il server MySQL è reattivo.

Per gli utenti che desiderano controllare se MySQL server è in esecuzione, si posso fare un paio di cose. Verificare che altri siti sullo stesso server stiano avendo lo stesso problema. Se anche su altri siti si ottiene sempre lo stesso errore, sicuramente c’è qualche problema con il server MySQL. Se non si dispone di un altro sito sullo stesso hosting può essere utile andare al tuo cPanel, tentare di accedere a phpMyAdmin e collegare il database. Se è possibile connettersi, dobbiamo verificare se il tuo utente database dispone di autorizzazioni sufficienti. Vediamo come: creare un nuovo file chiamato testconnection.php e incollare il seguente codice:

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

Assicurarsi di sostituire il nome utente e la password. Se il collegamento avviene con successo, allora significa che l’utente dispone di autorizzazioni sufficienti e non vi è qualcos’altro di sbagliato. Torna al tuo wp-config per assicurarsi che tutto sia corretto (eventuali errori di battitura).

Se non è possibile connettersi al database attraverso phpMyAdmin, allora sai che qualcosa non va con il server. Non significa necessariamente che il server MySQL non è attivo. Potrebbe essere che l’utente non dispone di autorizzazioni sufficienti.

In uno dei miei casi, il server MySQL era in esecuzione. Tutti gli altri siti sul server stavano lavorando bene, tranne il mio. Quando ho provato a connettermi a phpMyAdmin, ho finito per ottenere l’errore:

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

Ho telefonato al provider interessato e rapidamente hanno trovato il problema. In qualche modo i permessi del mio utente sono stati azzerati. Non sono sicuri di come sia successo, ma a quanto pare la ragione era quella. Tornati a ripristinare i permessi sono riuscito a far tornare online il sito.

Quindi, se si ottiene l’errore di accesso negato in entrambi i casi (la connessione a phpMyAdmin o attraverso testconnection.php), allora si dovrebbe contattare il proprio host per arrivare a risolvere il problema.

Altre possibili soluzioni

Tieni sempre ben presente che queste soluzioni potrebbero non funzionare per voi. Usate a proprio rischio e fate in modo di disporre di backup sempre aggiornati se qualcosa dovesse andare storto.

Un’altra possibile soluzione all’errore di database danneggiato e che, anche dopo la riparazione del database, l’errore non è andato via è questa. Il problema può riguardare un cambio di URL del sito. A quanto pare questo cambiamento ha causato l’errore. Si può quindi lanciare questa query SQL attraverso phpMyAdmin:

UPDATE wp_options SET option_value='YOUR_SITE_URL' WHERE option_name='siteurl'

Assicurarsi di sostituire YOUR_SITE_URL con il vostro url. La wp_options sarà diverso se si è cambiato il prefisso predefinito del database di WordPress.

Ho letto su numerosi siti che molte volte una semplice ri-upload di una nuova copia di WordPress ha risolto l’errore.

Questo è un errore davvero frustrante. Qual’è stata la soluzione che ha funzionato per te?

(Fonte http://www.wpbeginner.com/wp-tutorials/how-to-fix-the-error-establishing-a-database-connection-in-wordpress/)

4 commenti
    • Matteo ha detto:

      Chiedo scusa, l’articolo mi è stato passato da un ex-collega che non mi ha citato la fonte. Colpa mia non averne verificato la fonte.

  1. Amministratore ha detto:

    Copiato o no, ho risolto. Grazie a tutti

  2. Il problema in generale può avere altre cause: su alcune configurazioni più avanzate dipende da come si settano i buffer e gli altri parametri di configurazione del database. In generale, comunque, ogni hosting possiede una soluzione differente ed è bene chiedere informazioni, specialmente se l’errore si presenta all’improvviso durante l’utilizzo normale.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: