【问题标题】:How to get the delta of changeLogs in Liquibase如何在 Liquibase 中获取 changeLogs 的增量
【发布时间】:2020-05-26 11:40:47
【问题描述】:

与之前的 chnageSets 相比,我的要求是让 liquibase 仅从数据库生成更新后的 changeSets

假设我的 postgresql 中有两个表 t1 和 t2,所以在我的 changeLog 中有两个 changeSets。以下是为了理解:

<changelog>
    <changeSet> t1 </changeSet>
    <changeSet> t2 </changeSet>
</changelog>

现在,当我再创建一个表 t3 时,changeLog 将如下所示:

<changelog>
    <changeSet> t1 </changeSet>
    <changeSet> t2 </changeSet>
    <changeSet> t3 </changeSet> 
</changelog>

我希望 liquibase 生成类似于以下内容的内容,即更新后的更改:

<changelog>
    <changeSet> t3 </changeSet> 
</changelog>

这样可以方便地跨数据库发送更新的更改。

【问题讨论】:

  • 如果更改集 t1 和 t2 已经应用,它不会再次运行(默认)。因此,实际上只有 t3 会被应用。
  • Rajeev,我在我们的旧 Liquibase 论坛上看到了这个问题,但迁移过程中被忽略了。如果您有更多问题,请尝试新的forum.liquibase.org 或 Liquibase 也有一个关于 discord 的聊天论坛:discord.gg/RDuuVP

标签: liquibase delta


【解决方案1】:

liquibase 的精神是管理数据库模式。工具 changeLogGenerate 对启动项目很有用,但它的设计目的不是在版本之上创建增量。

Liquibase 必须是来源,而不是结果。

埃里克

【讨论】:

    【解决方案2】:
    1. PostgreSQL 中创建一个新数据库,如果相应的架构不属于您的changeLogFile
    2. Update 带有初始更改日志的新数据库(具有 t1 和 t2 的数据库)
    3. 您现在可以使用diffChangeLog 命令将--referenceUrl 指向新创建的数据库,并将--changeLogFile 指向您更改的changeLog(具有t1、t2 和t3 的那个)。它将创建changeLog,在您的情况下应该是t3。如果需要,您可以通过--outputFile 指定输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-23
      • 2015-11-13
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 2022-06-10
      相关资源
      最近更新 更多