Inicio › Foros › Bases de datos › MySQL › Error mysqldump 2020 Got packet bigger [RESUELTO]
Etiquetado: 2020, arreglado, backup, base de datos, copia de seguridad, database, error, export, exportación, mariadb, max_allowed_packet, mysql, mysqldump, resuelto, solución, solucionado, solved, tabla, table
- Este debate tiene 5 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 1 año, 7 meses por Varios.
-
AutorEntradas
-
08/19/2023 a las 10:07 #49348VariosModerador
Hola, estoy intentando hacer un backup (export) de una base de datos MySQL y MariaDB con la herramienta MySQL Workbench, pero en una tabla me muestra este error:
mysqldump: Error 2020: Got packet bigger than ‘max_allowed_packet’ bytes when dumping table
contabilidad
at row: 50355¿A qué puede ser debido?
08/19/2023 a las 10:16 #49349alonsojpdSuperadministradorEl error se produce porque, por defecto, mysqldump en MySQL Workbench tiene limitación de tamaño de fichero máximo en exportación, la de defecto es de 1GB. Si algún fichero adjunto a un campo de la tabla «contabilidad» supera este gigabyte, dará el error 2020.
Para solucionarlo, antes de pulsar en el botón «Start Export», pulsa en «Advanced Options…» y, en «The maximum size of one packet or any generated/intermediate string», cambia el valor 1G por, por ejemplo, 5G.
Cuando finalice el backup, además, te devolverá un aviso indicando si el límite que has puesto (5G), es muy grande, para reducirlo al límite del fichero de tamaño máximo encontrado (te lo indicará). Por si quieres ajustar el valor.
08/19/2023 a las 10:19 #49350alonsojpdSuperadministradorPara más información, verás que el mysqldump que lanza por cada tabla es:
MS DOS1mysqldump.exe --defaults-file="C:\Users\proyectoa\AppData\Local\Temp\tmp1kakmpfy.cnf" --host=srvmysql --port=3306 --default-character-set=utf8 --user=usuario_bd --protocol=tcp --max_allowed_packet=2G --skip-triggers "nombre_bd" "nombre_tabla"08/19/2023 a las 10:26 #49352VariosModeradorMuy interesante el comando, así puedo programarlo con una tarea programada en un fichero .bat.
Entiendo que el fichero C:\Users\proyectoa\AppData\Local\Temp\tmp1kakmpfy.cnf lo genera temporalmente con valores de configuración (contraseña y demás) ¿Qué contenido tendría que ponerle para que funcionase la copia programada?08/19/2023 a las 10:40 #49353alonsojpdSuperadministradorAsí es, ahí guarda la contraseña del usuario, entre otras cosas.
Un ejemplo de contenido de este fichero de configuración:TeX1234567891011121314[client]user="usuario_mysql"password="Contraseña_Usuario"host="IP_servidor_MySQL"port=3306protocol=tcplock-tables=FALSEdefault-character-set=utf8skip-triggers=truecomplete-insert=trueallow-keywords=truequote-names=truemax_allowed_packet=5GBall-databasesEn el fichero anterior le indicamos a mysqldump que haga backup de todas las tablas, así no hay que ir creando una línea en el script por cada tabla.
Para ejecutar un backup usando el fichero anterior (suponemos que se llama «config.cnf» y está en C:\backup):
MS DOS1mysqldump.exe --defaults-file=C:\backup\config.cnfTen en cuenta que el script debe conocer dónde está el ejecutable mysqldump.exe (puedes indicar la ruta en el propio script), por ejemplo:
MS DOS1C:\Backup\mysqldump.exe --defaults-file=C:\backup\config.cnfLa ventaja de usar el fichero de configuración es que todos los parámetros se establecen en dicho fichero, así no se alarga en exceso la línea del script a ejecutar.
08/19/2023 a las 14:21 #49355VariosModerador¡Perfecto! He creado una tarea programada que ejecuta un fichero .bat que contiene esta línea:
C:\MySQL\contabilidad\mysqldump.exe –defaults-file=C:\MySQL\contabilidad\config.cnf
El fichero config.cnf tiene este contenido:
[client]
user=»usr22bdconta»
password=»13456789″
host=»192.168.100.101″
port=3306
protocol=tcp
lock-tables=FALSE
default-character-set=utf8
skip-triggers=true
complete-insert=true
allow-keywords=true
quote-names=true
max_allowed_packet=2GB
all-databasesY me funciona perfecto!
Muchas gracias.
-
AutorEntradas
- Debes estar registrado para responder a este debate.