You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Liquibase时使用过时changelog是否会意外回滚schema?

问题结论

Liquibase默认不会在无显式回滚请求的情况下执行隐式回滚操作,你描述的场景不会出现schema被自动回滚的问题。

核心逻辑说明
  • Liquibase每次启动时会先读取数据库内置的DATABASECHANGELOG表,这张表会记录所有已经执行成功的changeSet信息
  • 加载当前服务内置的changelog列表后,只会比对两边的changeSet记录,默认只会新增执行未在DATABASECHANGELOG表中记录的changeSet
  • 若发现DATABASECHANGELOG表中存在当前changelog没有的已执行记录(也就是你描述的旧版本服务启动、当前changelog只有1、2,数据库已经跑过3的场景),默认会直接抛出异常终止服务启动,不会对现有schema做任何回滚修改。
相关配置说明

Spring Boot集成Liquibase时,控制该校验逻辑的配置项为spring.liquibase.fail-on-missing-change-sets:

  • 默认值为true:遇到上述不匹配场景直接启动失败,旧版本服务无法正常启动,不会修改数据库
  • 若手动改为false:仅会跳过该校验,服务可以正常启动,但依旧不会执行任何隐式回滚操作,仅忽略多出来的changeSet不做处理

注意:默认配置下,自动回滚仅在你显式执行liquibase rollback系列命令、或者显式配置回滚相关启动参数时才会触发,常规服务启动流程不会触发自动回滚逻辑。

内容的提问来源于stack exchange,提问作者Jerome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:57:02