当前位置: 首页 > 知识库问答 >
问题:

Liquibase部分提交变更集

艾国安
2023-03-14
databaseChangeLog:
  - changeSet:
      id: changeset-
      changes:        
         - renameTable:
            oldTableName: old_table
            newTableName: new_table
        - addColumn:
            columns:
              - column:
                  name: test_column_name
                  type: varchar(255)
                  tableName: other_table

这方面有什么最佳做法吗?我们不能在LiquiBase中手动设置事务吗?

共有1个答案

曹超
2023-03-14

部分提交变更集的不是Liquibase。我使用过许多数据库,对于我使用的所有数据库,一个基本概念是事务仅组合数据修改(DML)。

DDL从不是事务的一部分。它总是立即执行,并且打开的事务在执行之前自动提交。原因是数据库的rollback命令只能处理数据修改。它不能处理DDL。如果回滚不再可能,那么保持事务打开就变得毫无用处了。

因此,Liquibase确实创建了一个事务,并在doucementation状态结束时提交所有更改。但这只在变更集只包含DML而不包含DDL时才有效。

 类似资料:
  • 我有一个简单的liquibase变更集(下面),我正在尝试测试它。 这是应用程序启动后运行的第二个更改日志。 我故意编写了一个错误代码,其中我尝试创建列“new_2”两次,以强制回滚变更集中的所有条目:ADD_COL_2 然而,即使生成了回滚文件,并且我看到: 信息4/13/16 12:17 AM:LiquiBase:classpath:db/changelog/db.changelog-mult

  • 我已经用Spring试用过LiquiBase3.0测试版了(顺便说一句,它不适合2.0)。很顺利。 现在,我正在用Ant和相同的数据库和changelog测试它,在回滚所有更改并删除表DATABASECHANGELOG和DatabaseChangeloglock之后。 问题是liquibase将所有更改集记录在表DATABASECHANGELOG中,这意味着我的配置中没有任何错误,但它没有将更改提

  • 我有 在我的构建中。gradle我有 但是尽管成功了-到我的数据库中,它并没有添加任何新表。我有postreSQL,其中包含我所有表所在的方案- 我的控制台输出

  • 当本地文件变更以后,可以通过VCS —> Git —> Commit File 弹出提交变更窗口. 当然,分支合并过后也会弹出提交变更窗口. 配置提交信息 提交变更窗口中你可以选择Change list,也可以选择要提交的变更文件,默认是全选的. 在Author中选择或者输入作者名字.选择Amend commit(修订提交)会在Commit Message中添加上一次的提交信息. 在提交之前,你还

  • 我们使用liquibase对数据库进行源代码控制。最初,我们从Postgres开始,创建了数据类型为特定于Postgres的列的变更集。 例如,我们有一个变更集,它创建了具有“JSON”类型字段的表。现在,我们想转移到其他数据库。因此,当我们针对另一个数据库运行变更集时,它无法创建表。我尝试添加“failOnError=false”。但是,后面的变更集失败,因为该表不存在。 您能建议如何重构旧的变

  • 我在酗酒方面遇到了麻烦。出于某种原因(我没有更改任何现有的变更集或其他东西),它试图应用已经在base中的变更集。所以我得到了一些错误,比如“关系”表“已经存在”。 我找到了这个标签-