Liquibase 4.8.0升级导致一个现有变更集出现问题



我有一个变更集,在我将liquibase-core升级到4.8.0版本后,它不会被执行。

我在这里使用postgres数据库。

失败,出现以下错误:

由:likibase.exception.LiqibaseException:likibase.exception.MigrationFailedException:更改集db/changelog/likibase/release/db.changelog-release-xml 的迁移失败

Reason: liquibase.exception.DatabaseException: ERROR: column "xyz" of relation "abc" is an identity column [Failed SQL: (0) ALTER TABLE abc ALTER COLUMN xyz SET DEFAULT nextval('custom_seq')]

不确定这里出了什么问题。

我该做些什么来纠正这个错误?什么是身份栏?

安"身份;列是自动递增/串行列。错误来自数据库,其中正在运行一个变更集,该变更集试图将默认值设置为nextval('custom_seq'),但它不喜欢这样。可能是因为它已经在数据库中标记为自动递增/串行/标识。

这可能有几个原因,而且我没有足够的信息来了解这个问题。这听起来确实像是以前的liquibase版本运行的同一个变更日志?

一些潜在的选择:

  1. 文件路径的配置方式发生了更改。Liquibase不仅通过id和author字段,还通过文件的查找路径来标识每个变更集。如果该路径的配置方式有错误,Liquibase会将其视为一个新的变更集,并重新应用它,这将以";列已经是一个标识";。如果是一个错误导致的,它可能已经在Liquibase的后续版本中修复。

  2. 为特定更改类型生成的SQL中存在更改。可能是为了使其更加正确,但由于数据库的状态,新SQL由于某种原因而无效。

要帮助区分您的情况,请检查:

  • 是什么变更集引发了错误,您希望它现在在您的数据库中运行吗
  • 如果没有期望它运行,那么它可能是上面的第一名。日志中显示的路径与该变更集的数据库changelog表中存储的路径有何不同
  • 如果您确实期望它运行,那么变更集说应该做什么?变更集实际上无效吗?或者,考虑到您的数据库状态,您会期望它工作吗

相关内容

  • 没有找到相关文章

最新更新