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
".
Prólogo
- Este tipo de error a menudo se debe a 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 está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 varias aproximaciones posibles:
Verificación y reconexión automática
Antes de ejecutar una consulta, se recomienda verificar si la conexión MySQL sigue activa. Si la conexión se ha cerrado, puede restablecerla automáticamente antes de continuar con su consulta. Aquí tienes 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 método 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ías 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 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.