我在使用Liquibase时遇到了麻烦。由於某些原因(我沒有改變任何現有的變更集或其他東西),它試圖應用已在基地的變更集。所以我得到了以下的錯誤 "relation "table" already exists"
.
我发现这个标签 - <validCheckSum>
但它似乎只适用于变化集的新校验和。我想做的是忽略一些变化集,如果有一些校验和在 databasechangelog
. 例如,我试过 <validCheckSum>f24567a5f86276f22cb8c5a8eddf25a4</validCheckSum>
但用这个校验和进行迁移(在表 databasechangelog
)仍然运行并失败。
UPD: 如果我在空数据库上运行我的变化集,我可以看到校验和没有改变。但它仍然试图在一些非空数据库中执行已经完成的迁移。
当你改变变化集的逻辑时,变化集的校验和会改变(除了前提条件、上下文和validCheckSum之外的所有内容)。请看这篇文章 什么会影响ChangeSet的校验和?
您可以执行 液基:clearCheckSums 命令,它将重新计算您的changeSets的校验和,并将它们的值存储在 它将重新计算您的changeSets的校验和,并将其值存储在 databasechangelog
表,从而解决你的问题。
您可以使用 <validCheckSum>any</validCheckSum>
如果你不想在未来处理更改校验码,但它是一个很好的选择。不 是个好主意,因为你正在为你的changeSet寻找完整性检查。