1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Risolvere un errore MySQL (server has gone away)
Questa guida permette di risolvere un errore di tipo "Invalid query: MySQL server has gone away
".
Premessa
- Questo tipo di errore è spesso causato dal 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 soluzioni possibili:
Verifica e riconnessione automatica
Prima di eseguire una query, è consigliabile verificare se la connessione MySQL è ancora attiva. Se la connessione è stata chiusa, è possibile ripristinarla automaticamente prima di procedere con la query. 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" regolari
Un altro metodo consiste nell'eseguire uno script che invia regolarmente un "ping" al database per mantenere la connessione attiva. Ad esempio, potresti creare un lavoro pianificato (cron job) che invia una query leggera, come SELECT 1;
a intervalli regolari.
Aggiornamento dei parametri MySQL (Server Cloud)
Con un server cloud, puoi 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.