MySQL Error 1153 – Obtuve un paquete más grande que ‘max_allowed_packet’ bytes

Estoy importando un volcado de MySQL y obteniendo el siguiente error.

$ mysql foo < foo.sql ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes 

Aparentemente hay archivos adjuntos en la base de datos, lo que hace que las inserciones sean muy grandes.


Esto es en mi máquina local, una Mac con MySQL 5 instalada desde el paquete MySQL.

¿Dónde puedo cambiar max_allowed_packet para poder importar el volcado?

¿Hay algo más que deba establecer?

Simplemente ejecutando mysql --max_allowed_packet=32M … resultó en el mismo error.

Probablemente tenga que cambiarlo tanto para el cliente (se está ejecutando para realizar la importación) como para el daemon mysqld que se está ejecutando y aceptando la importación.

Para el cliente, puede especificarlo en la línea de comando:

 mysql --max_allowed_packet=100M -u root -p database < dump.sql 

Además, cambie el archivo my.cnf o my.ini en la sección mysqld y configure:

 max_allowed_packet=100M 

o podría ejecutar estos comandos en una consola MySQL conectada a ese mismo servidor:

 set global net_buffer_length=1000000; set global max_allowed_packet=1000000000; 

(Use un valor muy grande para el tamaño del paquete).

Como dijo michaelpryor, tienes que cambiarlo tanto para el cliente como para el servidor daemon mysqld.

Su solución para la línea de comandos del cliente es buena, pero los archivos ini no siempre funcionan, dependiendo de la configuración.

Entonces, abra un terminal, escriba mysql para obtener un prompt mysql, y emita estos comandos:

 set global net_buffer_length=1000000; set global max_allowed_packet=1000000000; 

Mantenga abierto el indicador de mysql y ejecute la ejecución de SQL de la línea de comandos en un segundo terminal.

Esto se puede cambiar en su archivo my.ini (en Windows, ubicado en \ Archivos de progtwig \ MySQL \ MySQL Server) debajo de la sección del servidor, por ejemplo:

 [mysqld] max_allowed_packet = 10M 

Re my.cnf en Mac OS X cuando se usa MySQL desde la distribución del paquete mysql.com dmg

Por defecto, my.cnf no se encuentra en ninguna parte.

Necesita copiar uno de /usr/local/mysql/support-files/my*.cnf a /etc/my.cnf y reiniciar mysqld . (Que puede hacer en el panel de preferencias de MySQL si lo instaló).

En etc / my.cnf intente cambiar max_allowed _packet y net_buffer_length a

 max_allowed_packet=100000000 net_buffer_length=1000000 

si esto no funciona, intente cambiar a

 max_allowed_packet=100M net_buffer_length=100K 

La solución es boost el max_allowed_packet del daemon de MySQL. Puede hacer esto con un daemon en ejecución iniciando sesión como Super y ejecutando los siguientes comandos.

 # mysql -u admin -p mysql> set global net_buffer_length=1000000; Query OK, 0 rows affected (0.00 sec) mysql> set global max_allowed_packet=1000000000; Query OK, 0 rows affected (0.00 sec) 

Luego, para importar tu volcado:

 gunzip < dump.sql.gz | mysql -u admin -p database 

En CENTOS 6 /etc/my.cnf, en la sección [mysqld] la syntax correcta es:

 [mysqld] # added to avoid err "Got a packet bigger than 'max_allowed_packet' bytes" # net_buffer_length=1000000 max_allowed_packet=1000000000 # 

Use una variable max_allowed_packet emitiendo un comando como

mysql --max_allowed_packet=32M -u root -p database < dump.sql

Poco relacionado con tu problema, aquí hay uno para Google.

Si no has mysqldump el SQL, es posible que tu SQL esté roto.

Acabo de recibir este error al tener accidentalmente un literal de cadena no cerrado en mi código. Dedos descuidados suceden.

Ese es un fantástico mensaje de error para obtener una cadena desbocada, ¡gracias por ese MySQL!

Es un riesgo de seguridad tener max_allowed_packet en un valor más alto, ya que un atacante puede enviar paquetes de mayor tamaño y bloquear el sistema.

Por lo tanto, Optimum Value de max_allowed_packet debe ser ajustado y probado.

Es mejor cambiar cuando sea necesario (usando set global max_allowed_packet = xxx ) que tenerlo como parte de my.ini o my.conf .

Establezca max_allowed_packet en el mismo (o más) de lo que era cuando lo vació con mysqldump. Si no puede hacer eso, haga el volcado de nuevo con un valor menor.

Es decir, suponiendo que lo dejaste con mysqldump. Si usaste alguna otra herramienta, estás solo.

Estoy trabajando en un entorno de alojamiento compartido y he alojado un sitio web basado en Drupal. No puedo editar el archivo my.conf o el archivo my.conf también.

Entonces, eliminé todas las tablas que estaban relacionadas con Cache y, por lo tanto, pude resolver este problema. Todavía estoy buscando una solución / forma perfecta para manejar este problema.

Editar – Eliminar las tablas creadas problemas para mí, porque Drupal esperaba que estas tablas deberían existir. Así que vacié el contenido de estas tablas que resolvió el problema.

Algunas veces escriba la configuración:

 max_allowed_packet = 16M 

en my.ini no funciona.

Intenta determinar my.ini de la siguiente manera:

 set-variable = max_allowed_packet = 32M 

o

 set-variable = max_allowed_packet = 1000000000 

Luego reinicie el servidor:

 /etc/init.d/mysql restart