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

Liquibase-忽略旧变更集

裴宜春
2023-03-14

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

我找到了这个标签-

UPD:如果我在空数据库上运行我的变更集,我可以看到校验和没有更改。它仍然尝试执行已经完成的某个非空数据库的迁移。


共有1个答案

芮祺
2023-03-14

当您更改变更集的逻辑时,变更集的校验和也会更改(除了先决条件、上下文和有效检查之外的所有内容)。看看这篇文章,什么会影响变更集校验和?

您可以执行liquibase:clearCheckSums命令。它将重新计算变更集的校验和,并将其值存储在数据库变更日志表中,从而解决您的问题。

您可以使用<代码>

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

  • 我在一些字段上有@NotNull注释。然而,当我尝试生成diffChangelog时,它会删除所有非空约束 示例类: 差异集: 唯一的解决方案似乎是在每个字段上添加一个额外的注释@列(nullable=false)。我可以做任何事情,这样我就不必在每个字段上添加额外的注释。

  • 我试图从现有数据库(MySQL)中使用liquibase(3.5.5)。 > C: /液化酶-3.5.5/liquibase。bat—驱动程序=com。mysql。jdbc。驱动程序^--classpath=C:/Libraries/mysql-connector-java-5.1.37-bin。jar^--changeLogFile=db。变更日志。xml^--url=“jdbc:mysql:/

  • 您可能已经注意到,缺少了“生成为标识”,这使我相信不管出于什么原因,AutoIncrement=“true”被忽略了。 我使用Oracle 12.1.0.2和org.LiquiBase:LiquiBase-Core 3.8.2。OJDBC驱动程序版本为19.3.0.0。分级属性为: 我读过互联网,我知道我的Oracle版本与此列类型兼容,并且我不需要创建额外的Oracle序列。有什么线索会出什么问

  • 我正在使用liquibase运行一个changelog文件来部署几个数据库对象。如果在变更日志中找不到特定文件,则会出现文件未找到错误并停止执行。我想忽略未找到的文件,而不是引发错误。我查看了文档,但没有找到任何适用于我的用例的内容。有线索吗? 提前感谢。

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