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

Liquibase在回滚时遵循哪些步骤?

王佐
2023-03-14

我不明白使用LiquiBase回滚时的详细步骤。

我有一个场景,比如6个变更集,对于一个变更集,没有定义回滚--也就是说,变更集中只有

总的来说,想知道Databasechangelog中的记录何时删除吗?

共有1个答案

阎作人
2023-03-14

在运行回滚时,liquibase查找要回滚的变更集,然后检查每个变更集中的 标记,该标记描述如何回滚变更集。

如果没有 标记,那么Liquibase将检查变更集中的变更是否具有如何回滚的内置逻辑。正如gile所指出的,如果更改中有足够的信息可以撤消它(比如createTable更改中有删除表所需的表名),它仍然可以回滚它们。

但是,如果更改中没有足够的信息(比如dropTable没有重新创建表所需的信息),那么rollback命令将失败,出现“不能回滚”错误。

    null

如果您指定了一个空的回滚块,您就告诉Liquibase“回滚所需的逻辑是什么都不做”,所以Liquibase很高兴地运行无操作回滚命令,并将变更集标记为回滚。

 类似资料:
  • 在对特定变更集执行update命令后,我将liquibase与oracle数据库一起使用,该变更集的日志插入到DATABASECHANGELOG表中,但是如果我执行rollbackCount命令回滚该变更集,插入的日志将被删除,并且我无法找到已执行并再次回滚的变更的历史记录。

  • case-0-3.sql: 我在进行任何更改之前标记数据库: 之后,我在每个文件应用后应用文件和标记数据库: 求求你,救命。可能有人在sql或其他格式中使用回滚操作?哪里错了?我做错了什么?它是工作液基功能吗?

  • 问题内容: MySQL的NOW()是否遵循系统的时区或某些标准,例如GMT或UTC? 问题答案: 在当前时区。从5.1文档: 以’YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS.uuuuuu格式返回当前日期和时间作为值,具体取决于该函数是在字符串上下文中还是在数字上下文中使用。该值以当前时区表示。 现在,“当前时区”可能意味着不同的含义: 系统时区 通常为MySQL服务器指

  • case-0-3.sql: I在进行任何更改之前标记数据库: 之后,我应用文件,并在每个文件应用后标记数据库:

  • 我正在处理一个分支,例如需要删除表X中的一列,我添加了一个更改,它对该特定分支有好处,然后我切换到另一个分支,该分支仍然需要该列,并且该更改需要回滚。db在不同的分支之间有很多变化,比如这样的变化。 我为每个分支添加一个新的changelog xml,并将其包含在主changelog xml中。显然,当我切换到另一个分支时,前一个分支的changlog xml不再在工作区中,并且liquibase

  • 我的问题是liquibase没有回滚我的一些变更集,这些变更集是在我试图回滚的变更集上设置标签后执行的。 例如,我创建了两个按正常方式执行的变更集(A和B)。然后,我创建了另一个变更集,它将变更集B的标记设置为Release1。并且这个变更集也按预期工作。但是,我随后执行另外5个变更集,所有变更集都使用回滚命令。而且这些也执行得很好。 现在,这个回滚不应该回滚在执行release1标记之后执行的任