Cómo resolver el error "MySQL server has gone away"
Categoría:
Temas técnicos sobre webs, Problemas y errores
Fecha:
09/06/2025
Mientras que anteriormente las webs se realizaban únicamente con HTML y en algunas ocasiones se incluía CSS, actualmente la mayoría de webs se compone de ficheros (PHP por ejemplo) y base de datos.
Esto implica que la conexión con la base de datos debe funcionar con normalidad para que la web pueda responder correctamente, en caso contrario, podemos experimentar múltiples errores que pueden indicar problemas con la base de datos.
Uno de ellos es el error 'MySQL server has gone away', que podemos ver también como 'ERROR 2006 (HY000): MySQL server has gone away'.
Índice del artículo
Aunque es un error que puede tener varias causas, el problema de base es que la conexión entre la aplicación o proceso que se está ejecutando (puede ocurrir también al lanzar tareas como importaciones de base de datos) y el servidor de base de datos se rompe, lo que causa que el proceso o consultas SQL pendientes no puedan continuar ejecutándose y, por tanto, no es posible obtener la información necesaria para resolver el contenido que necesitamos.
En ocasiones una o varias consultas de las que ejecutamos necesitan más tiempo para finalizar del que el servidor tiene configurado para ello, por lo que 'se cortan' antes de finalizar y obtener el resultado correcto y el proceso recibe este error.
Para solventarlo, habría 2 alternativas:
Aunque no es habitual, la base de datos puede corromperse en algunas ocasiones. Puede ocurrir si recientemente la hemos importado y no se ha importado correctamente (o si se han experimentado errores durante la exportación previa y el fichero no es válido), si se han perdido índices que puedan afectar a la estructura de la misma o por problemas de espacio en disco en nuestro servidor que impidan que la información se registre correctamente en la base de datos.
Si sospechamos que nuestra base de datos está corrupta, podemos restaurar una copia de seguridad válida, o bien optimizar y/o reparar la base de datos, desde phpMyAdmin por ejemplo.

Si nuestra web alcanza de forma constante o demasiado frecuentemente el límite de recursos asignado, puede ocasionar que el servicio de base de datos no funcione correctamente y se caiga o experimente reinicios esporádicos, lo que podría ocasionar que de forma temporal experimentemos el error 'MySQL server has gone away'.
Podemos verificar el tiempo que el servicio de base de datos lleva funcionando a través de terminal, con los siguientes comandos:
Este iniciará la consola para gestionar el servicio de base de datos).
(Este seleccionará el valor 'Uptime' del estado global, es importante finalizarlo con ';' para que se ejecute con normalidad).

El resultado nos lo dará en segundos, por lo que posteriormente debemos convertirlo a horas/días.

Si necesitamos reiniciar el servicio de base de datos, podremos hacerlo también desde RaiolaCP en el botón correspondiente:

O con el siguiente comando (si tenemos acceso a terminal):
Uno de los procesos en los que podemos experimentar este problema es al realizar una exportación o importación de la base de datos, especialmente si la base de datos con la que estamos trabajando contiene tablas de gran tamaño o campos de gran longitud.
Si estamos experimentando este error, podemos incrementar la variable "max_allowed_packet" (el parámetro que indica el tamaño máximo de un paquete de datos que puede transmitirse o recibirse por el servidor MySQL).
Podemos incrementarlo modificando este valor en la configuración del servidor, en el fichero:
"/etc/my.cnf" (sustituyendo el valor por el correspondiente)
Una vez que hayamos modificado el fichero, tendríamos que reiniciar el servicio de base de datos (podemos hacerlo con el comando indicado en el punto anterior).
Otra alternativa es especificar ese parámetro en el comando que utilicemos, si lo hacemos por terminal, de forma que no necesitaríamos modificar la configuración global del servidor.
Esto implica que la conexión con la base de datos debe funcionar con normalidad para que la web pueda responder correctamente, en caso contrario, podemos experimentar múltiples errores que pueden indicar problemas con la base de datos.
Uno de ellos es el error 'MySQL server has gone away', que podemos ver también como 'ERROR 2006 (HY000): MySQL server has gone away'.
Índice del artículo
- ¿Qué indica el error MySQL server has gone away?
- Causas del error 'MySQL server has gone away' y cómo solucionarlo
- Tiempo de consulta demasiado elevado
- Base de datos corrupta
- Recursos del servidor
- Error durante la exportación/importación de la base de datos

¿Qué indica el error MySQL server has gone away?
Aunque es un error que puede tener varias causas, el problema de base es que la conexión entre la aplicación o proceso que se está ejecutando (puede ocurrir también al lanzar tareas como importaciones de base de datos) y el servidor de base de datos se rompe, lo que causa que el proceso o consultas SQL pendientes no puedan continuar ejecutándose y, por tanto, no es posible obtener la información necesaria para resolver el contenido que necesitamos.
Causas del error 'MySQL server has gone away' y cómo solucionarlo
Tiempo de consulta demasiado elevado
En ocasiones una o varias consultas de las que ejecutamos necesitan más tiempo para finalizar del que el servidor tiene configurado para ello, por lo que 'se cortan' antes de finalizar y obtener el resultado correcto y el proceso recibe este error.
Para solventarlo, habría 2 alternativas:
- Optimizar las consultas SQL que realiza nuestra instalación: podemos ayudarnos del apartado 'Procesos' de phpMyAdmin, donde podremos ver las consultas que se ejecutan en tiempo real y de este modo verificar si hay alguna consulta cuya longitud o tiempo de ejecución debamos revisar.
- Aumentar el tiempo de ejecución de las consultas SQL (o tiempo de espera): para ello tendremos que editar la configuración del servidor de base de datos, concretamente las variables: "wait_timeout =" o "interactive_timeout ="
Es aconsejable tener en cuenta que aunque aumentar el tiempo de ejecución de las consultas SQL puede solventar el error, no siempre es la alternativa adecuada, ya que no deberíamos configurar valores exageradamente altos para la resolución de consultas a la base de datos.
Base de datos corrupta
Aunque no es habitual, la base de datos puede corromperse en algunas ocasiones. Puede ocurrir si recientemente la hemos importado y no se ha importado correctamente (o si se han experimentado errores durante la exportación previa y el fichero no es válido), si se han perdido índices que puedan afectar a la estructura de la misma o por problemas de espacio en disco en nuestro servidor que impidan que la información se registre correctamente en la base de datos.
Si sospechamos que nuestra base de datos está corrupta, podemos restaurar una copia de seguridad válida, o bien optimizar y/o reparar la base de datos, desde phpMyAdmin por ejemplo.

Recursos del servidor
Si nuestra web alcanza de forma constante o demasiado frecuentemente el límite de recursos asignado, puede ocasionar que el servicio de base de datos no funcione correctamente y se caiga o experimente reinicios esporádicos, lo que podría ocasionar que de forma temporal experimentemos el error 'MySQL server has gone away'.
Podemos verificar el tiempo que el servicio de base de datos lleva funcionando a través de terminal, con los siguientes comandos:
mysql
Este iniciará la consola para gestionar el servicio de base de datos).
SHOW GLOBAL STATUS LIKE 'Uptime';
(Este seleccionará el valor 'Uptime' del estado global, es importante finalizarlo con ';' para que se ejecute con normalidad).

El resultado nos lo dará en segundos, por lo que posteriormente debemos convertirlo a horas/días.
Si utilizamos un VPS Cloud Optimizado también podemos ver el tiempo que el servicio de base de datos lleva activo desde "RaiolaCP > Servidor > Servicios".

Si necesitamos reiniciar el servicio de base de datos, podremos hacerlo también desde RaiolaCP en el botón correspondiente:

O con el siguiente comando (si tenemos acceso a terminal):
service mysql restart
Error durante la exportación/importación de la base de datos
Uno de los procesos en los que podemos experimentar este problema es al realizar una exportación o importación de la base de datos, especialmente si la base de datos con la que estamos trabajando contiene tablas de gran tamaño o campos de gran longitud.
Si estamos experimentando este error, podemos incrementar la variable "max_allowed_packet" (el parámetro que indica el tamaño máximo de un paquete de datos que puede transmitirse o recibirse por el servidor MySQL).
Podemos incrementarlo modificando este valor en la configuración del servidor, en el fichero:
"/etc/my.cnf" (sustituyendo el valor por el correspondiente)
max_allowed_packet = 2048M
Una vez que hayamos modificado el fichero, tendríamos que reiniciar el servicio de base de datos (podemos hacerlo con el comando indicado en el punto anterior).
Otra alternativa es especificar ese parámetro en el comando que utilicemos, si lo hacemos por terminal, de forma que no necesitaríamos modificar la configuración global del servidor.
mysql --max_allowed_packet=2048M -u USUARIO_BD -p NOMBRE_BD < NOMBRE_ARCHIVO.SQL
Deja una respuesta
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *