Error Code: 2006 - Mysql Server Has Gone Away

Por:ivancp, enviado 10 sep 2011
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

  1. El problema se presenta cuando queremos insertar en un campo memo/blob datos muy grandes
    Code: Seleccionar todo
    1. INSERT INTO tabla (campo_blob)

    2.       VALUES ('Texto o datos muy grandes');

  2. 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 base_de_datos < archivo_backup_grande.sql

    El comando anterior restaura un archivo_backup_grande.sql en una base_de_datos desde linea de comando.
  3. Otra causa también puede ser que el servidor haya superado el tiempo limite para procesar la consulta. En este caso hay que hacer una investigación mas profunda y determinar la causa.

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:

Code: Seleccionar todo
  1. [mysql]

  2. #...

  3.  

  4. max_allowed_packet = 64M

  5.  

  6. #...



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.

Otros Artículos en esta sección

¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro de Bases de datos »