liquibase 中的动态占位符配置生成的动态校验和

Dynamic placeholder configuration in liquibase generated dynamic checksums

我正在使用 spring,liquibase 和 hsql 数据库。我正在为 table 创建一个序列,比方说示例 table。序列将从 liquibase 创建,如下所示

<changeSet id="xx" author="yy" dbms="hsql">
<preConditions onFail="MARK_RAN">
<not>
<sequenceExists sequenceName="example_id_sequence"/>
</not>
</preConditions>
<createSequence sequenceName="example_id_sequence" startValue="${hsql.exampleSequenceCount}" incrementBy="1"/>
</changeSet> 

正如您在此处注意到的,序列的 startValue 是使用 liquibase bean 的更改日志参数从外部 java 代码获得的。

The first startup works fine. After inserting some data into the example table, when I restart the startValue now will be max Id+1 value of the table, it is returned like that for a requirement.

因此校验和发生变化并抛出错误。我尝试包括前提条件,但也没有用。有什么解决方法吗

If there is a sequence present, don't check the checksum and don't create a new sequence

作为解决方法尝试添加:

<validCheckSum>your-check-sum</validCheckSum>

或:

<validCheckSum>ANY</validCheckSum>

它应该使这个 changeSet 的 checkSum 常量(或者在 ANY 的情况下不重要),所以这个 changeSet 只会执行一次。