info example drop databases data all mysql export mysqldump database-schema auto-increment

example - mysqldump-Exportar estructura solo sin autoincrement



mysqldump table (5)

Tengo una base de datos MySQL y estoy tratando de encontrar una forma de exportar su estructura solamente, sin los valores de incremento automático. mysqldump --no-data casi haría el trabajo, pero mantiene los valores auto_increment. ¿Hay alguna forma de hacerlo sin usar PHPMyAdmin (que sé que puede hacerlo)?


Es --create-options, que se incluye con --opt, por defecto, que genera las definiciones de la tabla AUTO_INCREMENT.

Si solo quieres las tablas base,

mysql -hlocalhost -uuser -ppass --skip-column-names --batch / -e "select table_name from tables where table_type = ''BASE TABLE'' and table_schema = ''schemaname''" INFORMATION_SCHEMA / | xargs mysqldump -hlocalhost -uuser -ppass / --no-data --skip-triggers --skip-opt --no-create-db / schemaname

Si quieres vistas, desencadenadores y rutinas también,

mysqldump -hlocalhost -uuser -ppass / --skip-opt --events --routines --no-data / schemaname


Gracias a esta publicación, pude responder mi pregunta:

¿Cómo puedo hacer control de versiones en mi db?

Entonces acabo de crear este script: db_bkp.sh

#!/bin/sh filename="db_structure.sql" backupfolder="/var/www/" fpath="$backupfolder/$filename" usr="DBUSER" pass="DBPASS" db="DBNAME" mysqldump --user=$usr --password=$pass --no-data $db | sed ''s/ AUTO_INCREMENT=[0-9]*//g'' > "$fpath"

Luego agregué esto a crontab:

30 5 * * * sh /home/scripts/db_bkp.sh

Luego, en mi repositorio, agregué el resultado, db_structure.sql a git y antes de presionar los cambios en prod, siempre compruebo si hay algún cambio estructural que olvidé hacer en todos los dbs.


La respuesta de JoDev funcionó perfectamente para mí con un pequeño ajuste a la expresión regular sed:

mysqldump -d -h localhost -u<user> -p<password> <databaseName> | sed ''s/ AUTO_INCREMENT=[0-9]*//g'' > databaseStructure.sql


Puedes hacerlo :

mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed ''s/ AUTO_INCREMENT=[0-9]*/b//'' > <filename>.sql

Como lo mencionaron otros, si desea que sed funcione correctamente, agregue el parámetro g (para el reemplazo global) como este:

mysqldump -u root -p -h <db-host> --opt <db-name> -d --single-transaction | sed ''s/ AUTO_INCREMENT=[0-9]*/b//g'' > <filename>.sql

(Esto solo funciona si tiene instaladas las herramientas GUI: mysqldump --skip-auto-increment )


mysqldump -u [USER] -p [PASSWORD] -d --skip-opt --single-transaction [DB_SCHEMA]> [FILE.ESTENSIONE]