Inicio Foros Bases de datos MySQL Error mysqldump 2020 Got packet bigger [RESUELTO]

Viendo 6 entradas - de la 1 a la 6 (de un total de 6)
  • Autor
    Entradas
  • #49348
    Varios
    Moderador

    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?

    #49349
    alonsojpd
    Superadministrador

    El 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.

    #49350
    alonsojpd
    Superadministrador

    Para más información, verás que el mysqldump que lanza por cada tabla es:

    #49352
    Varios
    Moderador

    Muy 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?

    #49353
    alonsojpd
    Superadministrador

    Así es, ahí guarda la contraseña del usuario, entre otras cosas.
    Un ejemplo de contenido de este fichero de configuración:

    En 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):

    Ten en cuenta que el script debe conocer dónde está el ejecutable mysqldump.exe (puedes indicar la ruta en el propio script), por ejemplo:

    La 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.

    #49355
    Varios
    Moderador

    ¡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-databases

    Y me funciona perfecto!

    Muchas gracias.

Viendo 6 entradas - de la 1 a la 6 (de un total de 6)
  • Debes estar registrado para responder a este debate.