我正在使用 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
提交
取消