猿问

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

我正在使用 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 值,它会像要求一样返回。


因此校验和发生变化并引发错误。我尝试包括先决条件,但这也不起作用。有没有像这样的解决方法


如果存在序列,则不检查校验和,也不创建新序列


动漫人物
浏览 144回答 1
1回答

慕哥6287543

作为解决方法,请尝试添加:<validCheckSum>your-check-sum</validCheckSum>或者:<validCheckSum>ANY</validCheckSum>它应该使该changeSet的checkSum常量(或者在 的情况下不重要ANY),因此该changeSet将仅执行一次。
随时随地看视频慕课网APP

相关分类

Java
我要回答