我正在使用 spring、liquibase 和 hsql 数据库。我正在为表创建一个序列,比如说示例表。该序列将从 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 代码获取的。第一次启动效果很好。在示例表中插入一些数据后,当我重新启动时,startValue 现在将是表的 max Id+1 值,它会像要求一样返回。因此校验和发生变化并引发错误。我尝试包括先决条件,但这也不起作用。有没有像这样的解决方法如果存在序列,则不检查校验和,也不创建新序列
1 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
作为解决方法,请尝试添加:
<validCheckSum>your-check-sum</validCheckSum>
或者:
<validCheckSum>ANY</validCheckSum>
它应该使该changeSet的checkSum常量(或者在 的情况下不重要ANY
),因此该changeSet将仅执行一次。
添加回答
举报
0/150
提交
取消