Algunas veces al ejecutar un volumen grande de consultas SQL el servidor MySQL nos devuelve este error: «Error Code: 2006 – Mysql Server Has Gone Away», este error es devuelto frecuentemente al restaurar una copia de seguridad.
Posibles causas
- El problema se presenta cuando queremos insertar un registro de gran tamaño en un campo de texto o binario.
INSERT INTO tabla (campo_blob) VALUES ('Texto o datos muy grandes');
- O cuando ejecutamos una consulta que contiene muchos registros a la vez. Si la cantidad de datos a insertar supera el limite establecido por la variable: max_allowed_packet que significa «tamaño máximo de paquete de datos permitido», por defecto este valor suele ser pequeño.
$ mysql -u usuario mi_base_de_datos < archivo_backup_muy_grande.sql
El comando anterior restaura un archivo_backup_grande.sql en una base_de_datos desde linea de comando.
- Otra causa también podría ser que el servidor haya superado el tiempo limite para procesar la consulta. En este caso hay que hacer una investigación mas profunda.
Solución
La solución es muy simple (si se trata de las posibles causas 1 y 2) cambiar en la configuración del servidor MySQL el valor de max_allowed_packet a la cantidad que sea necesaria, pueden ponerle un valor acorde al tamaño de consulta que esperan enviar al servidor, por ejemplo si tienen una copia de seguridad que ocupa 100Mb es buena idea que el max_allowed_packet sea por lo menos 64Mb.
La linea que corresponde a max_allowed_packet debería quedar asi:
[mysql] #... max_allowed_packet = 64M #...
En Ubuntu el archivo de configuración esta ubicado en /etc/mysql/my.cnf si no esta ahí pueden utilizar el comando locate my.cnf (incluso para cualquier distribución de Linux).
En Windows el archivo esta ubicado en el mismo directorio de instalación de MySQL con el nombre my.ini.