Errore nello stabilire una connessione al database in WordPress: come risolvere

Aggiornato il: 17-02-2023 20:08
Si tratta forse di uno degli errori più frequenti in WordPress, e merita una trattazione specifica: in questo articolo vi racconterò tutto quello che dovreste sapere, ai diversi livelli dell’hosting e del sito, sull’argomento.


V-Hosting è l'hosting italiano: scoprilo adesso


Scopri Keliweb , il servizio di hosting italiano: clicca qui !

Diagnostica dell’errore

L’errore viene notificato come indicato di seguito:

Error Establishing a Database Connection

oppure seguendo la traduzione italiana ufficiale

Errore nello stabilire una connessione al database

L’errore in questione impedisce nella totalità  dei casi all’applicazione oppure al servizio / pagina web di funzionare, su qualsiasi pagina di WordPress e sia lato pubblico (frontend) che amministratore (backend). Si tratta, di fatto, di un errore estremamente generico che può dipendere da una miriade di casistiche, che spesso si intrecciano tra loro e lo rendono un errore non tanto difficile da diagnisticare quanto da risolvere.

Questo messaggio di errore, che è di default su molti siti in WP, corrisponde ad una pagina bianca nella quale compare soltanto la scritta:

Errore nello stabilire una connessione al database / Error Establishing a Database Connection

il che significa che WordPress non riesce a connettersi al database e, per questa ragione, non può mostrare il sito correttamente. Questo è uno degli errori senza dubbio più frequenti per i principali servizi di hosting con db, e possiede numerose cause possibili: l’unica è verificarle una ad una, caso per caso, o capire la corretta combinazione tra i diversi casi.

Verifica del sito

Poichè questa diagnostica non fornisce ulteriori dettagli ai webmaster, è necessario effettuare una serie di verifiche manuali che ora riporteremo.

Se state lavorando su WordPress in locale, assicuratevi che sia Apache che il server MySQL siano correttamente stati attivati, e naturalmente  siano funzionanti; in caso contrario, configurateli a dovere o, e ne fate uso, in caso provate a reinstallare AMPPS, MAMP e analoghi. Nota: Apache funziona normalmente sulla porta 80 (da browser scrivere http://indirizzo/a/qualcosa e http://indirizzo/a/qualcosa:80 è equivalente di default) mentre MySQL sulla 3306; se qualcosa va storto, è molto comune dover riavviare il servizio. Potrebbe risultare difficoltoso riavviare il servizio in certi sistemi operativi, per cui potete come tecnica “estrema” andare a rimuovere MAMP (o equivalenti sistemi che contengano MySQL, PHP e Apache), riavviare il sistema e solo a questo punto installarlo da zero.

Se MySQL è attivo o comunque vi trovate su un hosting remoto, dovrete verificare il file (che si trova nella directory principale di WordPress) wp-config.php; apritelo con un editor di testo ed assicuratevi che sia correttamente configurato. In particolare, i quattro parametri DB_HOST, DB_USER, DB_NAME e DB_PASSWORD (vedi anche come configurare il wp-config.php). Fate attenzione in questa sede perchè non sempre DB_HOST è “localhost“: le credenziali di accesso potrebbero essere state ricopiate male o essere state modificate dal provider di hosting. Non disperate se non riuscite a capire quale host sia quello corretto: a questo link sono riportate le più comuni configurazioni dell’host per i vari servizi di hosting. Nel 90% dei casi che ho visto, comunque, il problema in questione si risolve prestando massima attenzione al contenuto di questi 4 parametri nel file wp-config.php del vostro sito in WP. Attenzione, ad esempio, che alcuni editor di testo non copiano per intero le stringhe dopo averle selezionate con doppio click, specialmente in presenza di simboli come il trattino (-).

Se i dati sono ben configurati potrebbe essere un problema più generale di server MySQL non attivo: provate a sentire il vostro servizio di hosting a riguardo, ed assicuratevi che sia funzionante. Per testarlo, si può preparare un semplice script PHP per vedere se MySQL è davvero attivo o meno. Di solito, a meno che non abbiate un hosting avanzato come un VPS, non è possibile avviare manualmente il server di database, per cui sarete costretti ad attendere che qualcuno lo faccia per voi. Attenzione che, in alcuni casi, il database di WordPress del vostro sito potrebbe essere stato disattivato per un problema di cosiddette slow queries, cioè plugin o theme che impiegano eccessivamente le risorse del vostro sito.

Come risolvere il problema (fosse facile…)

Per risolvere questo problema può essere necessario:

Segnalare il problema al nostro servizio di hosting.

La cosa più semplice, a cui spesso non si pensa :-)

In seconda istanza, provate ad aggiungere al file wp-config.php la direttiva

define ('WP_ALLOW_REPAIR', true);

e tentate, se è il caso, di riparare il database aprendo l’indirizzo

/wp-admin/maint/repair.php

Agire sui file my.cnf e /o apache.conf

(solo per utenti avanzati) Se avete accesso alla VPS o siete sistemisti, per intenderci, in molti casi il problema si risolve per due vie possibili: su una droplet Digital Ocean il problema del database “fragile” di WordPress, che cade molto spesso per capirci, si può “tarare” ricorrendo a due possibili file di configurazione Linux.

Configurare il file my.cnf per evitare che il DB vada in down

Il primo è il file my.cnf, il quale rappresenta il file di configurazione di MySQL e contiene parametri di “taratura” molto di fino. Impostando i parametri in modo corretto andrete a dimensionare le risorse usate dal database e, per intenderci, se il DB cade spesso è plausibile che si debbano ridurre questi valori rispetto ai valori standard riportati nel manuale ufficiale di MySQL.Dopo aver fatto le modifiche con i parametri ribassati numericamente, riavviate il DB e verificate se il sito “regge”. Se non funziona, riprovate con altre impostazioni o aiutatevi con MySQLTuner. Su Github trovate configurazioni ottimali già pre-confezionate per il file my.cnf, ma sono molto orientative e soggettive, oltre che spesso rischiano di portarvi totalmente fuori strada.

Per questa via, nella mia esperienza, non sempre è agevole risolvere, dato che l’ottimizzazione di un DB presenta varie problematiche non ovvie legate alla saturazione delle risorse. Potete aiutarvi nel farlo con script di monitoraggio come ad esempio sss. Vale anche la pena di ricordare che in genere gli hosting fissano (in genere a 25 al massimo) il limite delle connessioni simultanee che possono avvenire su un database.

Screenshot 2023 02 17 alle 19.48.26

Trovate questo file su Ubuntu e Debian nella cartella:

etc/mysql/my.cnf

Configurare il file apache.conf per evitare che il DB vada in down

Il secondo file su cui conviene investire qualche sforzo è sicuramente apache.conf, che contiene le informazioni necessarie al funzionamento del server tra cui, ad esempio, il numero di connessioni simultanee da mantenersi attive. Ammesso di trovarsi su una configurazione MLM, esiste il parametro:

MaxKeepAliveRequests

che viene generalmente impostato di default a 150 (significa che al massimo possono restare attive sul server fino a 150 client). La mia sensazione è che questo limite, se il database va spesso giù, sia troppo alto, e di fatto abbassandolo un po’ sembra che sia possibile migliorare sensibilmente le prestazioni anche del database.

Per intenderci:

MaxKeepAliveRequests 100

può essere un’impostazione alternativa, salvate poi il file e riavviate apache.

Screenshot 2023 02 17 alle 19.40.19

Trovate questo file su Ubuntu e Debian nella cartella:


Scopri Keliweb , il servizio di hosting italiano: clicca qui !


V-Hosting è l'hosting italiano: scoprilo adesso

/etc/apache2/apache2.conf

Non è detto che queste indicazioni siano funzionali per tutti i casi possibili, anzi sono abbastanza sicuro del contrario.

Disco pieno

Se il database va in down spesso, in alcuni casi, può essere anche colpa del disco pieno, il che porta ad un crash che pul diventare potenzialmente “tragico”: se MySQL non ha spazio su disco, può avere difficoltà a gestire i dati del database e potrebbe corromperlo irrimediabilmente (mi è capitato solo una volta, ma quella volta è stata dura).

In genere il disco pieno è un errore con codice di errore 503 nei log, per inciso.



Questo blog pubblica contenuti ed offre servizi free da 11 anni. – Leggi un altro articolo a caso – Per informazioni contattaci
5/5 (1)

Ti sembra utile o interessante? Vota e fammelo sapere.

Errore nello stabilire una connessione al database in WordPress: come risolvere
cyberpunk 12

Ingegnere per passione, consulente per necessità, docente di informatica; ho creato Trovalost.it e ho scritto quasi tutti i suoi contenuti. Ogni guida viene revisionata e aggiornata periodicamente. Per contatti clicca qui


V-Hosting è l'hosting italiano: scoprilo adesso


Scopri Keliweb , il servizio di hosting italiano: clicca qui !

e834b70e2af3043ecd0b470de7444e90fe76e6d31eb1124892f7c8 640 rage
Torna su