Al ejecutar un script SQL muy grande MySQL puede devolver un Error Code: 2006 – Mysql Server Has Gone Away. o bien un Error Code: 1153 Got a packet bigger than ‘max_allowed_packet’ bytes
Esto pasa especialmente al intentar restaurar copias de seguridad generadas con mysqldump.
Por defecto esta herramienta genera copias de seguridad que permite restaurar la base de datos. Genera un script que incluye las sentencias de creación de las tablas y las sentencias inserts para cada una de los registros que forman parte de las mismas.
Al tener que procesar un script SQL muy grande es conveniente restaurar desde terminal:
mysql --user=usuario --password=password < archivo.sql
O bien ya dentro del terminal MySQL:
mysql -u=root [-p=password] mysql> create database mi_base_de_datos; mysql> use mi_base_de_datos; mysql> source archivo.sql;
Para solucionar el error debemos modificar el fichero de configuración de MySQL y aumentar el tamaño del parámetro max_allowed_packet (el tamaño máximo es de 1000MB):
max_allowed_packet=16M
En sistemas Linux el fichero de configuración se encuentra en /etc/my.cnf. Sino está ahí utiliza el comando locate my.cnf. En Windows el fichero se llama my.ini. Para averiguar donde se encuentra abrir un terminal y escribir services.msc:
> services.msc
Ya dentro del terminal buscar el servicio de MySQL (MySQL56) click al botón derecho del ratón y seleccionar propiedades. En el campo Ruta de acceso al ejecutable tenemos la ruta al fichero de configuración:
Si utilizamos XAMPP. Click en botón Config para acceder al fichero de configuración: