1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Resolver un error MySQL (server has gone away)
Esta guía permite resolver un error de tipo "Invalid query: MySQL server has gone away
".
Preámbulo
- Este tipo de error tiene a menudo como origen mantener una conexión MySQL abierta sin enviar peticiones durante un intervalo de tiempo más allá del cual la conexión está cerrada: http://dev.mysql.com/doc/refman/5.7/en/gone-away.html
- Las variables wait_timeout y interactive_timeout que controlan esta desconexión a 30 segundos: http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html
Soluciones
Para evitar el error "MySQL server has gone away," aquí hay varios enfoques posibles.
Verificación y reconexión automática
Antes de ejecutar una consulta, se recomienda probar si la conexión MySQL todavía está activa. Si la conexión ha sido cerrada, puede restablecerla automáticamente antes de continuar con su consulta. Este es un ejemplo de PHP:
if (!mysqli_ping($connexion)) {
mysqli_close($connexion);
$connexion = mysqli_connect($host, $user, $password, $database);
}
Función mysqli_ping()
comprueba si la conexión sigue siendo válida. Si no lo es, el guión cierra la conexión y abre una nueva.
Envío regular de "Ping"
Otra forma de ejecutar un script que envía regularmente un "ping" a la base de datos para mantener la conexión activa. P.ex usted podría crear una tarea planificada (cron job) que envía una petición ligera, como SELECT 1;
a intervalos regulares.
Ajuste de la configuración MySQL (Server Cloud)
Con un Servidor Cloud, puede aumentar los valores de las variables wait_timeout
y interactive_timeout
desde el menú MySQL de su servidor para prolongar la duración de la conexión antes de que se cierre.