1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Risolvere un errore MySQL (server has gone away)
Questa guida aiuta a risolvere un errore di tipo "Invalid query: MySQL server has gone away
".
Preambolo
- Questo tipo di errore ha spesso come origine il mantenimento di una connessione MySQL aperta senza inviare richieste per un intervallo di tempo oltre il quale la connessione è chiusa: http://dev.mysql.com/doc/refman/5.7/en/gone-away.html
- Le variabili weit_timeout e interattivo_timeout che controllano questa disconnessione sono 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 alcuni approcci possibili.
Verifica e riconnessione automatica
Prima di eseguire una query, si consiglia di verificare 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 è quello di eseguire uno script che invia regolarmente un "ping" al database per mantenere la connessione attiva. P.ex si potrebbe creare un'attività pianificata (cron job) che invia una query leggera, come SELECT 1;
ad intervalli regolari.
Regolazione delle impostazioni MySQL (Server Cloud)
Con un Server Cloud è possibile aumentare i valori delle variabili wait_timeout
e interactive_timeout
a partire da Il menu MySQL del tuo server per prolungare la durata della connessione prima che sia chiusa.