Liquibase更改仅作为单个事务执行



在Liquibase论坛的讨论中,开发商Nathan Voxland说,Liquibase在每次更改后都应承诺。我知道那是一个七岁的线程,所以从那以后可能发生了很多变化,但也许不是吗?

它应该在更改后提交。在大多数数据库中,也可以添加自动参数。

更改标签的文档可以解释为"在ChangeLog成功的所有前提条件之后都承诺",这与7年历史的帖子相矛盾。

liquibase试图在末尾进行的交易中执行每个更改,或者如果有错误,则回滚。某些数据库将自动使用该交易设置,并可能导致意外的数据库状态。因此,除非有一组非自动委托更改,否则通常最好将每个更改进行一次更改,除非您希望将其应用于交易(例如插入数据(。

liquibase仍然打算在每次更改之后提交?

我正在使用Netbeans/maven的Liquibase 3.5.3,并使用Java代码启动更新。

我有一个main_changelog文件,它的唯一目的是将ChangElogs包含在目录中。该目录中的两个(目前(更改元素每个都有两个更改。这两个变形值每个都有一个onfail =" halt'"更改之外的先决条件。

我的测试环境具有ChangElog_1成功的先决条件(因此将执行其中的所有更改(,而ChangElog_2前提失败。

我看到的是,在这个全新的数据库上,数据库gangelog表被创建但空无一人。这些更改都没有进行,大概是因为后来的前提条件停止了故障。我期望所有更改都会停止。

按预期工作?或错误?

,如文档中所述,每个更改都有一个单独的交易

Liquibase试图在交易中执行每个更改...

https://docs.liquibase.com/coneppects/basic/changeset.html

来自liquibase文档:

更改级别的先决条件适用于所有更改,而不仅仅是 那些在当前的changelog或其子女变性中列出的。

因为您的前提条件在变更级别,并且您已指定停止,因此Liquibase不应用任何更改。交易性从未真正发挥作用。

最新更新