没有数据的MySql导出架构

Dar*_*Ray 467 mysql sql

我正在使用带有Java程序的MySql数据库,现在我想将程序交给其他人.

如何在没有数据的情况下导出MySql数据库结构,只是结构?

Dar*_*ric 909

您可以--no-data使用mysqldump命令选项

mysqldump -u root -p --no-data dbname > schema.sql
Run Code Online (Sandbox Code Playgroud)

  • 如果您不想或不能执行表锁,也可以考虑使用`--single-transaction`选项. (46认同)
  • -d是--no-data简称. (45认同)
  • 如果您的数据库有存储过程/函数,还可以考虑添加--routines (34认同)
  • 默认情况下,这不包括`CREATE DATABASE`命令.要包含,请将`dbname`替换为`--databases dbname`(简写:`-B dbname`).然后要在另一台服务器上导入,请使用`mysql -u root -p <schema.sql` (12认同)
  • 恕我直言,`mysqldump`是最好的答案.MySQL管理员被放弃了,而MySQL Workbench仍然非常错误. (10认同)
  • 总结注释中的所有选项,完整的命令是:`mysqldump -u root -p --single-transaction -d -R -B -r schema_struct_backup.sql schema_name` (3认同)

ont*_*ia_ 83

是的,你可以使用mysqldump--no-data选项:

mysqldump -u user -h localhost --no-data -p database > database.sql
Run Code Online (Sandbox Code Playgroud)

  • 我很惊讶这不是接受的答案,尽管提前十秒发布,如果与接受的答案不完全相同则更完整. (3认同)
  • @zypA13510,显然十秒就可以相差 749 票。 (2认同)

Pod*_*.io 15

您还可以使用该--no-data选项提取单个表

mysqldump -u user -h localhost --no-data -p database tablename > table.sql
Run Code Online (Sandbox Code Playgroud)


Rah*_*pad 6

您可以在mysqldump命令中使用-d选项

mysqldump -u root -p -d databasename > database.sql
Run Code Online (Sandbox Code Playgroud)


Ant*_*l0n 6

如果您使用 IntelliJ,您可以启用数据库视图(视图 -> 工具窗口 -> 数据库)

在该视图内连接到您的数据库。然后你可以右键单击数据库并选择“复制DDL”。其他 IDE 可能提供类似的功能。

智能DDL

  • 我尝试了一下,它不包含任何触发器(天知道还有什么不包含) (2认同)

And*_*s B 6

不使用输出转储.

mysqldump --no-data <database name> --result-file=schema.sql
Run Code Online (Sandbox Code Playgroud)


小智 5

请注意 --no-data 选项将不包括视图定义。所以如果你有如下观点

create view v1 
 select `a`.`id` AS `id`,
 `a`.`created_date` AS `created_date` 
from t1;
Run Code Online (Sandbox Code Playgroud)

使用 --no-data 选项,视图定义将更改为以下

create view v1
 select 1 AS `id`, 1 AS `created_date`
Run Code Online (Sandbox Code Playgroud)