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

Spring Boot启动时Flyway适配H2/Oracle数据库报错求助

两类Flyway启动报错的解决方案

一、H2数据库启动报错处理

错误原因

  1. 版本兼容冲突:Flyway 7.2.1不支持H2 2.x版本(当前用的是2.1.214)。H2 2.x重构了INFORMATION_SCHEMA结构,且VALUE成为关键字,导致Flyway执行的查询语句触发语法错误。
  2. 数据库实例不一致:Spring数据源配置的是jdbc:h2:mem:ppyDB,但Flyway单独指定了jdbc:h2:mem:myDB,两者使用独立的内存数据库实例,Flyway无法正确识别数据源配置。

解决方案

方案1:降级H2到兼容版本

将H2版本改为Flyway 7.x支持的1.4.200:

"h2", "1.4.200"

同时统一Flyway与数据源的数据库URL,修改application.yaml:

spring:
  flyway:
    url: jdbc:h2:mem:ppyDB;MODE=Oracle;DB_CLOSE_DELAY=-1

方案2:升级Flyway支持H2 2.x

Flyway 8.0及以上版本适配H2 2.x,升级到与Spring Boot 2.7.8兼容的8.5.13版本:

"flyway", "8.5.13"

同样需要统一Flyway与数据源的数据库URL,确保指向同一内存实例。


二、Oracle 12.1数据库启动报错处理

错误原因

Flyway 7.2.1社区版已停止支持Oracle 12.1,该版本Oracle的支持仅保留在付费的Teams Edition中。

解决方案

方案1:升级Oracle数据库版本

将Oracle升级到12.2及以上版本(推荐19c/21c),Flyway社区版支持这些新版本。

方案2:切换到Flyway Teams Edition

若无法升级Oracle,需使用付费的Flyway Teams Edition,它仍支持Oracle 12.1。需替换依赖为Teams版坐标,并配置对应的授权密钥。

方案3:降级Flyway到兼容版本

Flyway 6.x系列社区版仍支持Oracle 12.1,降级到与Spring Boot 2.7.8兼容的6.5.7版本:

"flyway", "6.5.7"

注意:降级会丢失Flyway 7.x的新特性,需评估业务影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:00:09