在Spring Boot 2下激活后启动liquibase。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Spring Boot 2下激活后启动liquibase。相关的知识,希望对你有一定的参考价值。

我们有一个带有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>  

这样一来,只有存在的索引才会被重建,而在空的数据库中是不可能的。

以上是关于在Spring Boot 2下激活后启动liquibase。的主要内容,如果未能解决你的问题,请参考以下文章

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<流程挂起与激活篇>

启动后定义的 Spring Boot DataSource

Flyway、Spring Boot 和应用程序在没有数据库的情况下启动

升级到 Spring Boot 2.2.2 后应用程序启动缓慢

Spring Boot的三种启动方式

Spring Boot web容器启动