【问题标题】:using liquibase on existing schema在现有架构上使用 liquibase
【发布时间】:2011-10-18 05:37:25
【问题描述】:

我已了解如何从现有架构生成 changelog.xml。没关系,但我不想碰现有的系统,除了带来新的变化。我也有需要应用所有更改的全新系统。

所以,我想让 liquibase 在现有系统上运行时仅从变更集 X 执行迁移。 IE。该系统的数据库处于修订版 X-1(但没有 liquibase sys 表),我不希望应用任何先前的迁移。

非常感谢, 帕特

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    我会推荐一种稍微不同的方法,正如 Liquibase forum thread 中所评论的那样

    1. 从现有架构生成变更日志。 liquibase CLI 可以为您做到这一点。我通常将生成的 XML 整理一下(将相关更改分组到单个更改日志中,进行特定于供应商的清理等),但 Liquibase 会完成大部分工作。

    2. 针对现有数据库运行该更改日志(changelogSync 命令),但仅将其标记为已应用(不实际修改架构)。

    3. 使用 liquibase 从那时起应用新的更改。

    【讨论】:

    • 用于第 2 步的命令(在 Liquibase 2.x 中)是“changelogSync”。
    【解决方案2】:

    我认为最简单的方法是首先在一个空数据库上执行初始设置,然后导出 liquibase 确实插入到DATABASECHANGELOG 表中的条目。然后我会导出这些条目并将它们手动插入其中一个目标数据库到他们的DATABASECHANGELOG 表中,因此 liquibase 不会再次执行“更改”。

    当然,我会在测试机器上使用测试转储来测试所有这些...:)

    【讨论】:

    • 啊,很简单。我会测试一下。谢谢。
    • 效果很好,Tommyd,谢谢。值得注意的是,如果您从导入脚本中删除校验和值,liquibase 将使用数据库中的内容再次计算。重要的是在数据库中有更改日志条目。很棒的东西。
    • 聪明的想法,点赞(虽然只是针对特殊用例)
    猜你喜欢
    • 1970-01-01
    • 2013-05-03
    • 2017-07-18
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2018-04-01
    • 2012-06-13
    • 2013-07-28
    相关资源
    最近更新 更多