“Error Establishing a Database Connection” è probabilmente uno degli errori più comuni che gli utenti di WordPress possono incontrare. È strettamente legato allo schermo bianco della morte (WSOD). Questo errore significa che il sito web non comunica più o non ha più accesso al database di WordPress; di conseguenza, l’intero sito si blocca.

Dovete risolvere immediatamente questo errore, perché può avere un impatto diretto sulle vendite, sul traffico e sulle analisi.

Ma non preoccupatevi, oggi parleremo di alcuni situazioni comuni in cui può verificarsi questo errore e dei modi per riportare il sito in funzione in pochissimo tempo.

Guarda la nostra Video-Guida per risolvere l’errore “Error Establishing a Database Connection”

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
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, su Kinsta, 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.

Da Kinsta, il nostro team di supporto può aumentare la durata della cache a un’ora o addirittura a una settimana, se lo desiderate. 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.

I clienti di Kinsta possono esaminare i log del loro sito all’interno del cruscotto MyKinsta:

Errore 500 "Error establishing a database connection" rivelato nel log access.log.
Errore 500 “Error establishing a database connection” rivelato nel log access.log.

Se siete clienti di Kinsta, potete anche dare un’occhiata al rapporto di ripartizione degli errori 500 in MyKinsta analytics per vedere se si tratta di un problema ricorrente.

Ripartizione errori 500
Ripartizione errori 500

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.

Se siete utenti di Kinsta, potete sfruttare la nostra funzione di backup integrata. Fate clic sul vostro sito WordPress in MyKinsta e selezionate Backup. Quindi, fate clic sulla scheda Manuale e sul pulsante Esegui backup adesso per creare un backup manuale.

Creare un backup di WordPress in MyKinsta.
Creare un backup di WordPress in MyKinsta.

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

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.
Icona del File Manager in cPanel.

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

Credenziali wp-config.php
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 e Kinsta 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.
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.
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
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.

<?php

$test = mysqli_connect('localhost', 'db_user', 'db_password');
if (!$test) {
    die('MySQL Error: ' . mysqli_error());
}
echo 'Database connection is working properly!';
mysqli_close($testConnection);

Poi aprite il file sul vostro sito WordPress: https://yourdomain.com/checkdb.php. Se ottienete un “Errore MySQL: Accesso negato”, allora saprete che il vostro nome utente o la vostra password sono sbagliati e dovrete proseguire al passo successivo per reimpostare le credenziali.

Accesso negato a MySQL
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
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
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
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
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.

Verificare le Credenziali del Database con Kinsta

Se siete un utente di Kinsta, verificare le credenziali del file wp-config.php e del server è molto più semplice! Tutto ciò che dovete fare è cliccare sulla sezione Info del vostro sito e, in fondo, vedrete il nome del database, il nome utente e la password. Di default, Kinsta utilizza localhost per il DB_HOST.

Verifica delle credenziali del database in MyKinsta.
Verifica delle credenziali del database in MyKinsta.

Quindi prendete le nuove credenziali e aggiornate il file wp-config.php. Dovrete aggiornare i valori DB_USER e DB_PASSWORD. Questo dovrebbe risolvere il problema delle credenziali. Se avete bisogno di ripristinare le credenziali, contattate il nostro team di supporto. 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.

2. 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
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
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
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
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.

Lettura consigliata: Come risolvere l’errore “MySQL Server Has Gone Away” in WordPress.

3. 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
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
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.

4. 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. Se siete clienti di Kinsta, non avete bisogno di plugin di caching, perché abbiamo una cache veloce a livello di server.

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.

Il team di assistenza di Kinsta è sempre a portata di clic nella parte inferiore destra della dashboard ed è disponibile 24 ore su 24, 7 giorni su 7, se avete bisogno di aiuto. E non dimenticate che abbiamo operatori in grado di assistervi in diverse lingue, tra cui inglese, spagnolo, francese, italiano e portoghese.

 

Invio di un messaggio al Supporto in MyKinsta.
Invio di un messaggio al Supporto in MyKinsta.

5. Ripristinare l’Ultimo Backup

Infine, se necessario, potete sempre ricorrere a un backup. In alcuni casi, questo potrebbe essere un modo più veloce per risolvere il problema se non siete preoccupati di perdere i dati inseriti dall’ultimo backup. Molti host hanno una propria procedura di ripristino del backup. Ricordate che potrebbe essere necessario ripristinare sia il database che i file.

Se siete utenti di Kinsta, potete ripristinare rapidamente un backup nella sezione Backup del vostro sito. Scegliete il momento in cui volete ripristinare il backup e fate clic su Ripristina a. Potrete quindi scegliere se ripristinare il sito in Staging o in produzione.

Ripristino di un backup di WordPress in MyKinsta.
Ripristino di un backup di WordPress in MyKinsta.

Vi verrà chiesto di confermare il ripristino. Inserite il nome del vostro sito e fate clic su “OK”. Al momento del ripristino, viene creato un nuovo backup in modo da poter annullare il ripristino se necessario.

Confermare il ripristino di WordPress
Confermare il ripristino di 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.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.