0

我们有一个带有 activiti 和 liquibase 依赖项的项目。Activiti 是自动配置的(exc. 'spring.activiti.async-executor-activate' 和 application.yml 中的 'spring.activiti.database-schema-update' 参数)和 liquibase 也是(exc. 'spring.liquibase.change-log ')。

现在我们需要使用特殊的 liquibase 变更集(如<sql>alter index ... rebuild tablespace ...</sql>.

现有数据库没有问题,但由于 liquibase 试图更改不存在的 ACT_* 索引,它在第一个应用程序开始安装 DB 时崩溃。

考虑到 Spring Boot 自动配置,我如何在安装 activiti DB 后启动 liquibase?

4

1 回答 1

2

您可以使用preconditions控制这些变更集的执行。例如:

<changeSet id="1"  author="bob">  
    <preConditions onFail="MARK_RAN">  
        <indexExists>your_act_index</indexExists>  
    </preConditions>  
    <sql>alter index ... rebuild tablespace ...</sql>
</changeSet>  

这种方式只有在索引存在时才会重建索引,而空数据库则不然。

于 2020-06-08T11:52:16.967 回答