Il vostro sito mostra una sola riga: «Errore nello stabilire una connessione al database». WordPress non è riuscito ad aprire il database che contiene pagine, impostazioni e account. I vostri contenuti sono di solito intatti: questa guida spiega come capire quale delle quattro cause possibili è in gioco, e come correggerla.
wp-config.php. I vostri contenuti sono di solito intatti.DB_NAME, DB_USER, DB_PASSWORD e DB_HOST di wp-config.php con quelli del pannello di hosting.Per ogni pagina che serve, WordPress apre una connessione al suo database MySQL o MariaDB con quattro valori scritti in wp-config.php, nella cartella principale del sito:
define( 'DB_NAME', 'nome_database' );
define( 'DB_USER', 'nome_utente' );
define( 'DB_PASSWORD', 'password' );
define( 'DB_HOST', 'localhost' );
«Errore nello stabilire una connessione al database» significa che questa connessione non è riuscita. Quattro cause lo provocano: credenziali che non corrispondono più, un server di database fermo o irraggiungibile, un server sovraccarico, oppure un database danneggiato. Le sezioni che seguono le passano in rassegna dalla più semplice da verificare alla più rara.
Se il problema è del server, aprite un ticket presso il provider, indicando l'ora di inizio del guasto e il messaggio esatto. Nel frattempo non c'è nulla da modificare sul sito.
È la causa più frequente dopo un trasferimento del sito, un cambio della password del database nel pannello di hosting o il ripristino di un backup. Confrontate i quattro valori di wp-config.php con la sezione dei database del pannello di hosting:
DB_NAME e DB_USER: molti provider li fanno precedere dal nome dell'account (account_wordpress). Il prefisso fa parte del nome.DB_PASSWORD: nel dubbio, impostate una nuova password per l'utente nel pannello e copiatela nel file.DB_HOST: localhost presso molti provider, non tutti. Alcuni indicano un nome di server o un indirizzo, a volte seguito da una porta (:3306). Il valore esatto è nel pannello.Una password che contiene un apice singolo (') tronca la stringa PHP che la racchiude in wp-config.php. Fatelo precedere da una barra rovesciata (\'), oppure scegliete una password senza apice singolo.
WordPress mostra un messaggio generico. MySQL, invece, dice esattamente che cosa non va. Due modi per chiederglielo, con i valori di wp-config.php:
mysql -h localhost -u nome_utente -p nome_database
Con WP-CLI, wp db check legge direttamente wp-config.php e controlla le tabelle con quelle credenziali.
Caricate questo file nella cartella principale del sito con un nome difficile da indovinare, apritelo nel browser, poi eliminatelo subito: contiene la password del database.
<?php
mysqli_report(MYSQLI_REPORT_OFF);
$link = @mysqli_connect('localhost', 'nome_utente', 'password', 'nome_database');
echo $link ? 'Connessione riuscita' : 'Errore: ' . mysqli_connect_error();
La prima riga conta: da PHP 8.1, una connessione che non riesce solleva un'eccezione per impostazione predefinita, e la pagina resterebbe bianca invece di mostrare il messaggio di MySQL.
| MySQL risponde | La causa | La correzione |
|---|---|---|
Access denied for user 'nome_utente'@'localhost' (using password: YES) | La coppia utente e password viene rifiutata, oppure l'utente non può collegarsi da questo host. | Reimpostare la password nel pannello e copiarla in DB_PASSWORD; verificare DB_USER. |
Access denied for user 'nome_utente'@'localhost' to database 'nome_database' | L'utente si collega, ma non ha permessi su questo database. | Associare l'utente al database nel pannello di hosting, con tutti i privilegi. |
Unknown database 'nome_database' | La connessione funziona, ma nessun database ha quel nome. | Correggere DB_NAME, prefisso compreso; verificare che il database esista ancora. |
Too many connections | Il server ha raggiunto il numero massimo di connessioni simultanee. | Vedere la sezione sugli errori intermittenti. |
Connection refused o No such file or directory (codice 2002 da PHP), Can't connect to MySQL server (da riga di comando) | Nessun server risponde a quell'indirizzo: il server è fermo, oppure DB_HOST è sbagliato. | Verificare DB_HOST nel pannello; altrimenti, contattare il provider. |
Connessione riuscita | Le credenziali sono giuste. | Guardare il database stesso: sezione successiva. |
Quando le credenziali sono giuste ma alcune tabelle sono danneggiate, il sito pubblico mostra lo stesso errore di connessione, e la bacheca un messaggio più preciso: «Una o più tabelle del database non sono disponibili. Il database potrebbe avere bisogno di essere riparato.» WordPress fornisce uno strumento apposito. Aggiungete questa riga a wp-config.php:
define( 'WP_ALLOW_REPAIR', true );
Poi aprite https://www.vostro-sito.com/wp-admin/maint/repair.php e avviate «Riparazione database». Togliete la riga appena terminata la riparazione: finché è presente, quella pagina è raggiungibile da chiunque, senza accesso.
Prima di qualsiasi riparazione, esportate il database (wp db export, oppure la scheda Esporta di phpMyAdmin). Se la riparazione non riesce, il provider può ripristinare il database dai suoi backup.
Un errore che compare in certi momenti e poi scompare da solo indica un server sovraccarico più che un'impostazione sbagliata. Le cause abituali:
wp-login.php o xmlrpc.php, visibili nei log di accesso del provider.Le soluzioni: bloccare i tentativi di accesso abusivi, aggiungere una cache delle pagine, disattivare xmlrpc.php se nessuna applicazione lo usa, e chiedere al provider i log dell'ora dell'errore.
Con Serenity by Simafri, creiamo il vostro sito web professionale, lo ospitiamo, lo proteggiamo e lo manteniamo aggiornato. Voi ci scrivete, noi ci occupiamo di tutto. Nome di dominio ed email professionale inclusi.
Di solito no. Il messaggio dice che WordPress non è riuscito a collegarsi al database, non che il database è sparito. Se phpMyAdmin mostra ancora le tabelle del sito, pagine, articoli e impostazioni sono al loro posto.
Perché il nuovo hosting usa credenziali del database diverse: nome del database, utente, password e a volte indirizzo del server. Copiate i valori del nuovo pannello in DB_NAME, DB_USER, DB_PASSWORD e DB_HOST in wp-config.php.
Reinstallare WordPress non cambia né le credenziali di wp-config.php né lo stato del server del database, che sono all'origine di questo messaggio. Testate prima le credenziali, poi il server, poi l'integrità delle tabelle.
Da un sovraccarico più che da un'impostazione: troppe connessioni simultanee, un picco di traffico o dei bot. I log di accesso e i dati sul consumo di risorse del pannello di hosting mostrano che cosa succedeva al momento dell'errore.
Simafri
Parliamo del vostro progetto
Diteci in due parole ciò che vi serve: vi rispondiamo rapidamente.
Grazie! La tua richiesta è stata inviata. Ti risponderemo a breve.
Preferite l'email? Scriveteci a support@simafri.com.