1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Risolvere un errore MySQL (il server è andato via)
Questa guida permette di risolvere un errore di tipo "Invalid query: MySQL server has gone away
".
Premessa
- Questo tipo di errore ha spesso come origine il fatto di mantenere una connessione MySQL aperta senza inviare richieste per un intervallo di tempo oltre il quale la connessione viene chiusa: http://dev.mysql.com/doc/refman/5.7/en/gone-away.html
- Le variabili
wait_timeout
einteractive_timeout
che controllano questa disconnessione sono impostate a 30 secondi: http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html
Soluzioni
Per evitare l'errore "MySQL server has gone away", ecco alcune possibili soluzioni:
Verifica e riconnessione automatica
Prima di eseguire una richiesta, è consigliabile testare se la connessione MySQL è ancora attiva. Se la connessione è stata chiusa, è possibile ripristinarla automaticamente prima di procedere con la richiesta. Ecco un esempio in PHP:
if (!mysqli_ping($connexion)) {
mysqli_close($connexion);
$connexion = mysqli_connect($host, $user, $password, $database);
}
La funzione mysqli_ping()
verifica se la connessione è ancora valida. Se non lo è, lo script chiude la connessione e ne apre una nuova.
Invio di "Ping" regolare
Un altro modo consiste nell'eseguire uno script che invia regolarmente un "ping" al database per mantenere la connessione attiva. Ad esempio, potresti creare un'attività pianificata (cron job) che invia una richiesta leggera, come SELECT 1;
a intervalli regolari.
Regolazione dei parametri MySQL (Server Cloud)
Con un Server Cloud, è possibile aumentare i valori delle variabili wait_timeout
e interactive_timeout
dal menu MySQL del tuo server per prolungare la durata della connessione prima che venga chiusa.