【问题标题】:What decides Liquibase changeset execution order什么决定了 Liquibase 变更集的执行顺序
【发布时间】:2020-04-12 20:52:26
【问题描述】:

我用谷歌搜索了一下,我发现变更集执行的顺序取决于它们在放置的文件中的顺序。

以下是同一文件中的变更集列表:

<changeSet id="A" author="abc">
</changeset>
<changeSet id="B" author="abc">
</changeset>

执行顺序是根据 id 还是放置顺序决定的?另外,如果&lt;changeSet&gt;在不同的文件中,执行顺序是什么?

【问题讨论】:

    标签: sql database liquibase


    【解决方案1】:

    执行顺序基于文件中的变更集顺序(它们放置的位置)。 通常是它们应该执行的顺序。

    如果您加载两个或多个文件,则将执行第一个文件中的所有变更集,然后执行第二个文件等... 您可以根据发布、一些标签等创建文件。

    【讨论】:

      【解决方案2】:

      正常更新操作的脚本执行顺序就像 Lemmy 上面给出的那样。但是,如果您修改了一些脚本并且变更集的“runOnChange”属性设置为 true,那么当您执行更新操作时,它只会执行那些修改或更新的变更集 - 再次按照 Lemmy 描述的相同顺序执行。

      现在,如果您执行回滚操作,我注意到在“第二次运行”中执行的变更集只执行了那些“runOnChange”变更集——它们首先被执行。所以看起来回滚不会基于原始变更集执行的降序发生 - 而是基于变更集执行时间的时间戳的降序。如果在原始运行的脚本的后面部分中创建了“依赖项”,这可能会导致回滚 sql 失败。我认为这可能是 liquibase 中的一个错误,即回滚行为,也可能是故意的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 1970-01-01
        • 1970-01-01
        • 2019-01-14
        • 1970-01-01
        • 2018-12-07
        相关资源
        最近更新 更多