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

修改r2dbc-h2依赖作用域解决MySQL R2DBC连接工厂创建异常的原因咨询

修改r2dbc-h2依赖作用域解决MySQL R2DBC连接工厂创建异常的原因咨询

我最近碰到了一个特别费解的R2DBC连接问题,折腾了半天靠调整依赖作用域解决了,但始终没搞明白背后的逻辑,想请教下各位大佬:

我的环境与配置

  • Java版本:17
  • 使用的Spring Boot Starter版本:
    • spring-boot-starter-data-r2dbc=3.1.1
    • spring-boot-starter-webflux=3.1.1

我在application.properties里配置了MySQL的R2DBC连接信息,交给自动配置加载:

spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/airportdb
spring.r2dbc.username=admin
spring.r2dbc.password=REDACTED
logging.level.root=DEBUG

遇到的异常

启动应用时,日志末尾抛出了这个关键异常:

Caused by: java.lang.IllegalStateException: Unable to create a ConnectionFactory for 'ConnectionFactoryOptions{options={database=airportdb, host=localhost, driver=mysql, password=REDACTED, protocol=, port=3306, user=admin}}'. Available drivers: [ pool ]

解决方式(但不懂原理)

我发现调整pom.xml里r2dbc-h2依赖的作用域后,问题就消失了——这个依赖本来就被spring-boot-starter-data-r2dbc间接引入了,我只是把它的作用域改成了runtime:

<dependency>
    <groupId>io.r2dbc</groupId>
    <artifactId>r2dbc-h2</artifactId>
    <scope>runtime</scope>
</dependency>

修改后应用就能正常启动,运行也完全没问题,但我实在想不通:
原本的异常根源是什么?为什么调整一个H2数据库的R2DBC依赖的作用域,居然能解决MySQL连接工厂创建失败的问题?

备注:内容来源于stack exchange,提问作者Gestalt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:59:29