Liquibase - 忽略旧的变化集

问题描述 投票:0回答:1

我在使用Liquibase时遇到了麻烦。由於某些原因(我沒有改變任何現有的變更集或其他東西),它試圖應用已在基地的變更集。所以我得到了以下的錯誤 "relation "table" already exists".

我发现这个标签 - <validCheckSum>但它似乎只适用于变化集的新校验和。我想做的是忽略一些变化集,如果有一些校验和在 databasechangelog. 例如,我试过 <validCheckSum>f24567a5f86276f22cb8c5a8eddf25a4</validCheckSum> 但用这个校验和进行迁移(在表 databasechangelog)仍然运行并失败。

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

migration liquibase
1个回答
1
投票

当你改变变化集的逻辑时,变化集的校验和会改变(除了前提条件、上下文和validCheckSum之外的所有内容)。请看这篇文章 什么会影响ChangeSet的校验和?

您可以执行 液基:clearCheckSums 命令,它将重新计算您的changeSets的校验和,并将它们的值存储在 它将重新计算您的changeSets的校验和,并将其值存储在 databasechangelog 表,从而解决你的问题。

您可以使用 <validCheckSum>any</validCheckSum> 如果你不想在未来处理更改校验码,但它是一个很好的选择。 是个好主意,因为你正在为你的changeSet寻找完整性检查。

© www.soinside.com 2019 - 2024. All rights reserved.