修改r2dbc-h2依赖作用域解决MySQL R2DBC连接工厂创建异常的原因咨询
修改r2dbc-h2依赖作用域解决MySQL R2DBC连接工厂创建异常的原因咨询
我最近碰到了一个特别费解的R2DBC连接问题,折腾了半天靠调整依赖作用域解决了,但始终没搞明白背后的逻辑,想请教下各位大佬:
我的环境与配置
- Java版本:
17 - 使用的Spring Boot Starter版本:
spring-boot-starter-data-r2dbc=3.1.1spring-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
相关产品推荐
相关产品推荐

