如何更新现有的变更集

How to update existing changeset

我想更新非常旧的变更集,因为其中有一个错误。我已经更新了那个 changesetid 并且在 运行 之后我得到了校验和错误,即校验和被修改了。现在我已经添加了带有这个新校验和的 validCheckSum 标签。成功后我看不到新的变化。有什么方法可以更新已经执行的更改集。

每个changeSet标签由“id”标签、“author”标签的组合唯一标识,所以请检查idauthor name是否已经存在DATABASECHANGELOGtable。如果组合存在,则更改 xml 文件中的 id,然后 运行 build

如果还是不行那么在<ChangeSet>中添加runOnChange属性然后试试

runOnChange - Executes if any changes found it already existing changeset

在带有 sqlFile 标记的变更集中使用 runOnChange 的示例。 我有一个使用 IDENTITY 列类型的 Oracle 18 脚本,但必须为不支持 IDENTITY 列类型的 Oracle 10 更改它

 <changeSet id="2" author="auto" runOnChange="true">
        <sqlFile dbms="oracle" encoding="utf8" endDelimiter=";" path="oracle/230.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true" />
  </changeSet>

如果它是一个非常旧的变更集,如您所说,您应该考虑不更改旧的变更集,而是添加一个新的变更集来修复错误,因为它可以让您更好地控制您拥有的版本。这是使用liquibase的主要原因之一。