首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从迁移中生成SQL,而不带拖放。

从迁移中生成SQL,而不带拖放。
EN

Stack Overflow用户
提问于 2014-11-23 03:55:15
回答 2查看 107关注 0票数 1

假设我有3次提交(每一次都添加了新的迁移):

  • v3 (添加新列)
  • v2 (添加新表)
  • v1

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

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

我知道如何这样做的唯一方法是将开发数据库回滚到v1 (通过签出v1并运行dbm-rollback),然后签出v3并运行dbm-update-sql

有没有一种方法可以做到这一点,而不回滚开发数据库(或黑客入侵DATABASECHANGELOG表)?类似于dbm-update-count-sql 2,它将为最后两个迁移创建SQL,而不管它们是否已经在开发中运行。

编辑:无法从开发机器连接到prod数据库。

EN

回答 2

Stack Overflow用户

发布于 2014-11-24 15:22:58

如果使用updateSQL生成SQL,则Liquibase对指向它的数据库不做任何更改,它只生成在正常更新时将执行的内容。因此,最简单的选择是只对生产数据库运行updateSQL,以获得更新它所需的脚本。

如果这不适用于您,如果您能够将DATABASECHANGELOG表备份/还原到另一个数据库(即使是空白数据库)并对其运行updateSQL,则它将输出相同的SQL。

最后,您可以使用“离线模式”在运行updateSQL时使用CSV文件充当DATABASECHANGELOG表。使用空表运行将生成所有update SQL,但如果只包含生产中的文件中的更改,updateSQL将输出更新生产所需的内容。

票数 1
EN

Stack Overflow用户

发布于 2014-11-24 15:05:19

如果可以连接到生产数据库,则只需使用updateSQL命令运行液化库即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27085428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档