max_allowed_packet. Como aumentar el tamaño máximo permitido para consultas mysql

aumentar max_allowed_packet en MySQL

Todo tu código funciona correctamente y de repente una consulta que parece inofensiva recibe un temido error de mysql “General error: 2006 MySQL server has gone away“. No actives de momento el panic mode. Este error suele venir provocado principalmente por dos supuestos:

  • Se ha alcanzado el timeout del proceso de mysql
  • Se ha provocado un error en mysql del que no se ha podido recuperar

Hoy nos ocuparemos del segundo supuesto. Hemos tumbado el proceso mysql con una consulta previa a la que nos devuelve el error por lo que ya sabemos donde buscar.

El error en MySQL

En mi experiencia, uno de los errores más comunes que devuelven este error es alcanzar el tamaño máximo de petición que permite MySQL. Cuando enviamos una petición a la base de datos estamos enviando un paquete de información y si fuese demasiado grande provocaría la caída de la conexión. Esto se produce típicamente cuando realizamos un INSERT de muchas filas o con un texto muy grande.

En primer lugar recomiendo verificar si es necesario dicha sentencia. Puede que estemos guardando información en la base de datos que no necesitemos. Un ejemplo típico es guardar las imágenes de un texto html directamente en la base de datos o guardar archivos de registro muy grandes. En esos casos puede convenir refactorizar nuestro código para evitar estos problemas.

¿Y si todo es correcto? Solo nos queda aumentar el tamaño máximo de paquete que permite recibir MySQL.

Aumentar max_allowed_packet en MySQL

La variable que nos afecta en este caso es max_allowed_packet que se encuentra en el fichero my.cnf. Este fichero podemos encontrarlo en diferentes localizaciones:

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • lampp/etc/my.cnf

Una vez en el fichero seguramente encontremos la variable ya definida bajo el epígrafe [mysqld]. Solo tenemos que modificarla con el valor deseado.

[mysqld]
max_allowed_packet=16M

En el ejemplo hemos usado 16 megas que es tamaño más que suficiente.

Solo nos queda reiniciar el proceso de mysql y ya deberíamos de poder realizar las consultas problemáticas.

Otras consideraciones

El tamaño máximo permitido por MySQL 5 es de 1GB. Si bien no debería ser necesario un tamaño tan enorme. Según la propia página de MySQL al respecto es perfectamente seguro aumentar dicho tamaño ya que solo será usado si hace falta. Sin embargo, mi recomendación es que uséis solo lo que vayáis a necesitar y no sobredimensionéis la memoria disponible por MySQL sin necesidad.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *