Come Risolvere “Error Establishing a Database Connection” in WordPress

 

5 Semplici Soluzioni per Risolvere l’Errore Nello Stabilire Una Connessione al Database di WordPress:

  1. Verificare se le credenziali di accesso al database sono corrette (la causa più comune del problema).
  2. Riparare un database corrotto con la modalità repair integrata di WordPress: define(‘WP_ALLOW_REPAIR’, true);
  3. Ripristinare i file corrotti
  4. Verificare con il provider di hosting eventuali anomalie relative al server del vostro database
  5. Ripristinare il vostro ultimo backup

Support

Ecco come funziona: tutte le informazioni del vostro sito WordPress, come i dati dei post, i dati delle pagine, le meta-informazioni, le impostazioni dei plugin, le informazioni di login, ecc. sono memorizzate nel vostro database MySQL. Gli unici dati non memorizzati sono i contenuti multimediali come le immagini e i file del tema dei plugin e del core, come index.php, wp-login.php, ecc.

 

Quando qualcuno visita il vostro sito, PHP esegue il codice della pagina, interroga il database e mostra le informazioni al visitatore nel suo browser.

Se questo non funziona correttamente, vi ritroverete con il messaggio “error establishing a database connection”, come si vede qui sotto. L’intera pagina è vuota perché non è possibile recuperare i dati per il rendering della pagina, in quanto la connessione non funziona correttamente. Questo non solo compromette il frontend del vostro sito, ma vi impedisce anche di accedere alla bacheca di WordPress.

Messaggio “Error establishing a database connection” in Chrome

Tuttavia, i visitatori potrebbero non vedere subito questo errore sul frontend. Questo perché molto probabilmente il vostro sito sta ancora servendo le pagine dalla cache fino alla sua scadenza. Ad esempio, di default tutti i siti WordPress vengono memorizzati nella cache per un’ora. Per questo motivo, se un sito sta ancora servendo dalla cache, potrebbe apparire accettabile a un visitatore.

Se avete un sito che non cambia molto spesso, questo può aumentare le prestazioni del vostro sito in quanto non deve recuperare nuovi file così spesso dopo la scadenza della cache. Inoltre, in casi come quello sopra descritto, nella maggior parte dei casi il frontend del sito (a meno che non ci sia uno script o una parte del sito che interrompe la cache) rimarrà attivo molto più a lungo.

Quando i visitatori cercano di accedere al vostro sito mentre si verifica questo errore, viene generato un codice di stato HTTP 500 nei log. Questo stesso codice di stato viene visualizzato con un “errore interno del server”. Significa che qualcosa è andato storto sul server e la risorsa richiesta non è stata consegnata. Quando tutto funziona correttamente, il vostro sito genererà un codice di stato HTTP 200, il che significa che va tutto bene.

Quali sono le cause di “Error establishing a database connection”?

Perché succede? Ecco alcuni motivi comuni. E non preoccupatevi, approfondiremo ognuno di questi motivi in modo che possiate imparare a risolvere il problema. In genere è possibile risolvere questo errore in meno di 15 minuti.

Credenziali di accesso al database errate

Il vostro sito WordPress utilizza informazioni di login separate per connettersi al database MySQL.

Il database è danneggiato

Con tante parti in movimento, temi, plugin e utenti che li cancellano e li installano continuamente, a volte i database si corrompono. Questo può essere dovuto a una tabella mancante o danneggiata, o forse alcune informazioni sono state cancellate per errore.

Potreste avere dei file corrotti nella vostra installazione di WordPress

Questo può accadere anche a causa di hacker.

Problemi con il server del database

Diverse cose potrebbero essere sbagliate da parte dell’host web, come ad esempio un sovraccarico del database per un picco di traffico o una mancata risposta a causa di un numero eccessivo di connessioni contemporanee. Si tratta di un problema comune agli host condivisi che utilizzano le stesse risorse per molti utenti sugli stessi server.

Un picco di traffico

A seconda dell’host utilizzato, il server potrebbe non essere in grado di gestire molte connessioni simultanee al database. Un aumento del traffico può causare problemi temporanei al database.

Come Risolvere “Error establishing a database connection”?

Prima di risolvere l’errore, consigliamo di eseguire un backup del sito WordPress. Molti dei consigli che seguono comportano la manipolazione delle informazioni del database, quindi non dovrete peggiorare la situazione. Dovreste sempre fare un backup prima di cercare di risolvere i problemi del sito WordPress, indipendentemente da quanto pensate di essere esperti di tecnologia.

Potete utilizzare un popolare plugin di backup per WordPress come VaultPress o WP Time Capsule per fare il backup dei file e del database del sito.

Creare un backup di WordPress

Avete anche la possibilità di ripristinare un backup in produzione o in staging. Oppure potete eseguire manualmente il backup del database MySQL utilizzando phpMyAdmin. Una volta che il backup è stato eseguito, è il momento di risolvere i problemi di connessione al database.

  1. Controllare le Credenziali di Accesso al Database
  2. Riparare il Database WordPress Corrotto
  3. Riparare i File corrotti di WordPress
  4. Verificare la Presenza di Problemi con il Server del Database
  5. Ripristinare l’Ultimo Backup
  1. Controllare le Credenziali di Accesso al Database

La prima cosa da fare è verificare che le credenziali di accesso al database siano corrette. Questa è la causa più frequente del messaggio di “error establishing a database connection”. Soprattutto dopo la migrazione a un nuovo provider di hosting. I dati della connessione del vostro sito WordPress sono memorizzati nel file wp-config.php, che generalmente si trova nella root del sito.

Contiene quattro importanti informazioni che devono essere corrette affinché la connessione avvenga con successo.

Nome del database

// MySQL settings

// The name of the database for WordPress

define(‘DB_NAME’, ‘xxxxxx’);

Nome utente del database MySQL

// MySQL database username

define(‘DB_USER’, ‘xxxxxx’);

Password del database MySQL

// MySQL database password

define(‘DB_PASSWORD’, ‘xxxxxxxxx’);

Nome host MySQL (server)

// MySQL hostname

define(‘DB_HOST’, ‘localhost’);

Per accedere al file wp-config.php, potete collegarvi al vostro sito tramite SFTP e navigare nella root. Oppure, se utilizzate cPanel, potete cliccare su “File Manager”, navigare nella root del sito e cliccare con il tasto destro del mouse per modificare il file.

Icona del File Manager in cPanel.

Ecco un esempio di come appare il file una volta aperto.

Credenziali wp-config.php

Ora dovete verificare i valori attuali con quelli presenti sul vostro server per assicurarvi che siano corretti. Gli utenti di cPanel  possono seguire le indicazioni riportate di seguito.

Controllare le Credenziali del Database in cPanel

La prima cosa da verificare è il nome del database. Per farlo, dovete accedere a phpMyAdmin in cPanel nella sezione Database.

Icona di phpMyAdmin in cPanel.

Dovreste vedere il nome del database in basso a sinistra. Potete ignorare il database “information_schema” perché è utilizzato dall’host. Dovrete quindi confrontare questo nome con il valore DB_NAME del vostro file wp-config.php. Se corrispondono, il problema non è questo. Se non corrispondono, dovete aggiornare il file wp-config.php.

Individuare il nome del database in phpMyAdmin.

Potete verificare che si tratti del database corretto anche controllando che contenga l’URL del vostro sito WordPress. Per farlo, fate clic sul database e poi sulla tabella wp_options (che potrebbe essere leggermente diversa per motivi di sicurezza, come wpxx_options). Nella parte superiore della tabella, vedrete i valori dell’URL e del nome del sito. Se questi valori corrispondono al vostro sito attuale, potete essere certi di essere nel posto giusto.

Verificare l’URL del sito in phpMyAdmin

Se il nome del database era già corretto e continuate a ricevere il messaggio di “error establishing a database connection”, dovrete controllare anche il nome utente e la password. Per farlo, dovrete creare un nuovo file PHP nella directory principale di WordPress e inserire il seguente codice. Potete chiamarlo come volete, ad esempio checkdb.php. Cambiate i valori di db_user e db_password con quelli del vostro file wp-config.php.

Accesso negato a MySQL

Ecco il messaggio che dovreste vedere: “La connessione al database funziona correttamente”. Ma ovviamente, se così fosse, non sareste qui. Assicuratevi di cancellare/rimuovere questo file dopo aver terminato i test.

La connessione al database funziona correttamente

Ora dovete reimpostare il nome utente e la password. In cPanel, fate clic su Database MySQL nella sezione Database.

Database MySQL in cPanel

Scorrete verso il basso e create un nuovo utente MySQL. Cercate di scegliere un nome utente e una password unici, in modo che non possano essere facilmente indovinati. Lo strumento di generazione di password funziona in modo eccellente. Poi fate clic su “Crea utente”. In alternativa, potete cambiare la password in questa schermata per l’utente attuale del database.

Creare un nuovo utente MySQL

Quindi scorrete verso il basso e aggiungete il nuovo utente al database. Nella schermata successiva vi verrà chiesto quali privilegi volete assegnare. Selezionate “Tutti i privilegi”.

Aggiungere un utente al database in cPanel

Quindi prendete le nuove credenziali e aggiornate il file wp-config.php. Dovrete aggiornare i valori DB_USER e DB_PASSWORD. Potete anche rieseguire il file di prova di prima. Questo dovrebbe risolvere il problema delle credenziali. In caso contrario, potreste ancora avere un hostname sbagliato (DB_HOST). Alcuni host utilizzano valori diversi.

Ecco un elenco di alcuni valori comuni dell’host DB. In genere si tratta di localhost. Ma potete sempre contattare il vostro provider di hosting o controllare la documentazione se non siete sicuri. Alcuni potrebbero anche utilizzare 127.0.0.1 invece di localhost.

Se avete seguito tutte le indicazioni di cui sopra e continuate a ricevere il messaggio “error establishing a database connection”, procedete con i passaggi che seguono.

  1. Riparare il Database WordPress Corrotto

In alcuni casi, potrebbe essere che il vostro database sia corrotto. Questo può accadere occasionalmente (anche se non molto spesso) perché, nel corso del tempo, centinaia di tabelle vengono aggiunte/rimosse da nuovi plugin e temi. Se cercate di accedere alla dashboard del vostro sito WordPress e ricevete il seguente errore, significa che il vostro database è corrotto: “Una o più tabelle del database non sono disponibili. Potrebbe essere necessario riparare il database”. È importante notare che questo errore potrebbe essere visualizzato solo sul back-end, mentre sul front-end viene visualizzato il messaggio di “error establishing a database connection”.

WordPress dispone di una modalità di riparazione del database che potete attivare. Aggiungete quanto segue in fondo al file wp-config.php.

define(‘WP_ALLOW_REPAIR’, true);

Modalità di riparazione di WordPress

Andate quindi nella seguente posizione del vostro sito WordPress: https://yourdomain.com/wp-admin/maint/repair.php. Avrete la possibilità di riparare o di riparare e ottimizzare il database. Dato che probabilmente state risolvendo un problema di interruzione di servizio del sito, consigliamo di utilizzare l’opzione di riparazione del database perché è più veloce.

Riparazione del database di WordPress

Dopo aver eseguito la riparazione del database, assicuratevi di rimuovere la riga di codice che avete aggiunto al file wp-config.php. In caso contrario, chiunque potrà accedere alla pagina repair.php. Se usate cPanel, potete eseguire la riparazione anche dalla schermata dei database MySQL.

Riparazione del database in cPanel

In alternativa, potete eseguire la riparazione da phpMyAdmin. Basta accedere a phpMyAdmin, cliccare sul database e selezionare tutte le tabelle. Poi, dal menu a tendina, fate clic su “Ripara tabella” In pratica si tratta di eseguire il comando REPAIR TABLE.

Riparare le tabelle in phpMyAdmin

Infine, l’altra opzione è quella di eseguire la riparazione utilizzando WP-CLI con il seguente comando:

wp db repair

Per ulteriori informazioni, consultate le risorse per gli sviluppatori di WordPress.

Se volete ottimizzare il vostro database, abbiamo alcuni ottimi tutorial su come ottimizzare le revisioni di WordPress per migliorare le prestazioni, oltre a come convertire le tabelle MyISAM in InnoDB. Se il vostro sito continua ad avere problemi, passate alla fase successiva.

  1. Riparare i File corrotti di WordPress

La successiva possibile causa del messaggio di “error establishing a database connection” potrebbero essere dei file del core di WordPress corrotti. Che ciò sia dovuto a un problema di trasferimento dei file via FTP, a un hacker che ha avuto accesso al vostro sito o a un problema del vostro host, potete risolvere rapidamente il problema. Ma consigliamo di fare un backup del sito prima di provare.

State per sostituire la versione del core di WordPress. Non toccherete i plugin, i temi o i media, ma solo l’installazione di WordPress.

Tuttavia, potreste perdere le modifiche o il codice personalizzato che avete aggiunto a file come .htaccess o wp-config.php. Se avete fatto un backup del vostro sito web prima di provare a risolvere il problema, avrete delle copie di questi file che potrete ripristinare in seguito.

Per iniziare, dovete scaricare una nuova copia di WordPress da WordPress.org.

Scaricare WordPress

Decomprimete questo file sul vostro computer. All’interno, dovrete eliminare la cartella wp-content e il file wp-config-sample.php.

Eliminare la cartella wp-content

Caricate quindi i file rimanenti tramite SFTP sovrascrivendo i file esistenti. In questo modo verranno sostituiti tutti i file problematici e avrete a disposizione file nuovi, puliti e non corrotti. Consigliamo di cancellare la cache del browser dopo aver eseguito questa operazione. Poi controlla il vostro sito WordPress per vedere se l’errore è ancora presente.

  1. Verificare la Presenza di Problemi con il Server del Database

Se nulla di quanto sopra vi ha aiutato a risolvere il problema, consigliamo di verificare con il vostro provider di hosting perché potrebbe trattarsi di un problema del server del database. Ad esempio, se ci sono troppe connessioni contemporanee al database, potrebbe verificarsi un errore. Questo perché molti hosting limitano il numero di connessioni consentite ai loro server. L’utilizzo di un plugin di caching può ridurre al minimo le interazioni con il database del vostro sito.

Questo problema può verificarsi spesso sugli host condivisi, in quanto qualcun altro potrebbe teoricamente influenzare il vostro sito. Questo perché gli host condivisi utilizzano le stesse risorse dei server. Questo è un altro motivo per cui vi consigliamo di utilizzare un host WordPress gestito ad alte prestazioni, in modo da evitare un sovraffollamento. Ciò significa anche che l’ambiente è in genere ottimizzato per gestire grandi quantità di traffico, in particolare per i siti WordPress.

Riepilogo

Come avete visto, ci sono diversi modi per risolvere “error establishing a database connection” di WordPress. La causa più comune è la presenza di credenziali non valide nel file wp-config.php. Controllare che siano corrette è il miglior punto di partenza. L’ultima cosa che vorreste per un sito web è avere dei tempi di inattività.

Speriamo che uno dei passaggi sopra descritti vi abbia aiutato a ripristinare il vostro sito. Ricordate che, se necessario, potete sempre ripristinare il vostro sito da un backup.

Avete riscontrato il messaggio “error establishing a database connection” sul vostro sito? Siete riusciti a risolvere il problema? Fatecelo sapere qui sotto nei commenti.