我们有一个带有activiti和liquibase依赖关系的项目。activiti是自动配置的(example.yml中的'spring.activiti.async-executor-activate'和'spring.activiti.database-schema-update'params),liquibase也是(example.liquibase.change-log')。
现在我们需要使用特殊的liquibase变化集来重建activiti表(ACT_*)的索引,例如 <sql>alter index ... rebuild tablespace ...</sql>
.
現有的資料庫沒有問題,但在安裝DB後第一次啟動應用程式時就崩潰了,原因是 liquibase試圖更改一個不存在的ACT_*索引。
考虑到Spring Boot的自动配置,我如何在activiti DB安装后启动liquibase?
你可以通过以下方式来控制这些变化集的执行 先决条件. 比如说。
<changeSet id="1" author="bob">
<preConditions onFail="MARK_RAN">
<indexExists>your_act_index</indexExists>
</preConditions>
<sql>alter index ... rebuild tablespace ...</sql>
</changeSet>
这样一来,只有存在的索引才会被重建,而在空的数据库中是不可能的。