Hoy nos hemos encontrado con este error , este error hace unos años salia frecuentemente debido a que el tamaño para subir una base de datos era bastante pequeño, hoy por hoy pese a que las bases de datos suelen ser mas grandes estos valores se han incrementado considerablemente.
En esta entrada vamos a ver cómo soluciona Got a packet bigger than ‘max_allowed_packet’ bytes
Básicamente es un problema con la limitación de paquetes permitidos en la configuración de MySQL
Digamos que está mas preparado para ejecutar consultas en la base de datos no demasiado grandes , más bien de un tamaño moderado
Es por eso que cuando hacemos migraciones y tenemos que subir consultas muy muy grandes suele darnos este error y acaba ‘petando‘.
Si lanzamos una consulta grande, podamos pasarnos facilmente del límite establecido, llamado límite de paquetes.
Para no dejar el servidor colapsado se establece este límite de reserva de memoria RAM, que es la que se utilizará para lanzar la consulta que has subido. Digamos que se utiliza para proteger el servidor.
Para que no nos de este problema y si estamos lanzando el script por linea de comandos bastaría con aumentar le limite, cambiando el 50 por la cifra que quieras. Con 50 no deberías de tener mucho problema. Pero puedes ponerlo en 200 o 500 para lanzar tu script.
mysql --max_allowed_packet=50M -u usuario -p labasedeDatos < el_backup.sql
Esta solución nos valdría solamente si lo estamos lanzando por linea de comandos, y solamente para ese script.
Ahora bien, si queremos guardar los cambios en el servidor y queremos que los cambios sean permanentes , tendremos que editar el fichero de configuración y cambiar o añadir el valor de esa variable. Sería así, buscamos el fichero de configuración que estará en etc/my.ini o bien en /etc/my.cnf , lo editamos y añadimos o cambiamos el valor de max_allowed_packet
max_allowed_packet=500M
Por último te quedaría reiniciar el servidor, para reiniciar tu servicio de mysql sería algo así:
service mysqld restart
Vale, ahora te muestro otra solución para cuando utilices phpMyadmin, y no tengas acceso a la consola, ni puedas editar el fichero de configuración de mysql, dentro de tu phpMyAdmin tendrías que lanzar los siguientes comandos, y si el servidor te lo permite te dejará ejecutar la consulta sin problemas.
set global net_buffer_length=1000000;
set global max_allowed_packet=1000000000;