1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Resolver un error MySQL (el servidor se ha ido)
Esta guía permite resolver un error de tipo "Invalid query: MySQL server has gone away
".
Prólogo
- Este tipo de error a menudo se debe al hecho de mantener una conexión MySQL abierta sin enviar consultas durante un intervalo de tiempo más allá del cual la conexión se cierra: http://dev.mysql.com/doc/refman/5.7/en/gone-away.html
- Las variables
wait_timeout
yinteractive_timeout
que controlan esta desconexión son de 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 varias aproximaciones posibles:
Verificación y reconexión automática
Antes de ejecutar una consulta, se recomienda probar si la conexión MySQL sigue activa. Si la conexión ha sido cerrada, puede restablecerse automáticamente antes de continuar con su consulta. Aquí hay un ejemplo en PHP:
if (!mysqli_ping($connexion)) {
mysqli_close($connexion);
$connexion = mysqli_connect($host, $user, $password, $database);
}
La función mysqli_ping()
verifica si la conexión sigue siendo válida. Si no lo es, el script cierra la conexión y abre una nueva.
Envío de "Ping" regular
Otro medio consiste en ejecutar un script que envía regularmente un "ping" a la base de datos para mantener la conexión activa. Por ejemplo, podría crear una tarea programada (cron job) que envía una consulta ligera, como SELECT 1;
a intervalos regulares.
Ajuste de los parámetros MySQL (Servidor en la nube)
Con un Servidor en la nube, 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.