2014-11-23 83 views
1

说我有3个提交(每一个新移民加):生成SQL从迁移不落全部

  • V3(添加新列)
  • V2(添加新表)
  • V1

生产数据库在v1和我的开发数据库在v3

我想生成一个SQL脚本,它将生产数据库升级到v3

我知道怎么做的唯一途径是(通过检查v1和运行dbm-rollback),然后结账v3和运行dbm-update-sql回滚发展数据库v1

有没有办法做到这一点没有滚动开发数据库回(或骇客在DATABASECHANGELOG表)?像dbm-update-count-sql 2这会为最后两次迁移创建SQL,无论它们是否已在开发中运行。

编辑:无法从开发计算机

回答

0

连接到督促数据库如果您可以连接到生产数据库,你会运行liquibase用即updateSQL命令。

+0

无法连接到prod数据库:( – zoran119 2014-11-24 21:21:02

1

如果您使用updateSQL生成SQL,Liquibase不会更改您指向的数据库,它只会生成它在正常更新时执行的操作。因此,最简单的选择是仅对生产数据库运行updateSQL以获取更新它所需的脚本。

如果这不起作用,如果您能够将DATABASECHANGELOG表备份/恢复到另一个数据库(即使是空白的数据库)并运行updateSQL,它也会输出相同的SQL。

最后,您可以使用"offline mode"在运行updateSQL时使用CSV文件充当DATABASECHANGELOG表。使用空表运行会生成所有更新SQL,但如果仅包含正在生产的文件中的更改,则updateSQL将只输出更新生产所需的内容。