java.sql.SQLException: validateConnection false 解决方法记录

版本依赖

更改配置文件时,mysql、oracle成功连接,sqlserver提示错误

		<!-- 引入druid依赖 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.2.8</version>
		</dependency>

发现问题

Druid 与 sqlserver 驱动不兼容

2022-04-19 02:03:10,777 111- ERROR [Druid-ConnectionPool-Create-1302277081] [com.alibaba.druid.pool.DruidDataSource] - create connection SQLException, url: jdbc:sqlserver://IP:PORT;DatabaseName=XXX;, errorCode 0, state null pos=DruidDataSource.java:2840 
java.sql.SQLException: validateConnection false
	at com.alibaba.druid.pool.DruidAbstractDataSource.validateConnection(DruidAbstractDataSource.java:1418)
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1733)
	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2838)
Caused by: java.lang.NullPointerException: null

解决方案(动态)

               DataSourceProperty dataSourceProperty = new DataSourceProperty();
                dataSourceProperty.setUrl(url);
                dataSourceProperty.setUsername(userName);
                dataSourceProperty.setPassword(passWord);
                dataSourceProperty.setDriverClassName(driverClass.getValue());
                if (driverClass.equals(DriverClassEnum.SqlServer)) {
                    DruidConfig dc = new DruidConfig();
                    dc.setValidationQuery("select 'x' ");
                    dataSourceProperty.setDruid(dc);
                }

                DataSource dataSource = dataSourceCreator.createDataSource(dataSourceProperty);

                //dynamicRoutingDataSource.
                dynamicRoutingDataSource.addDataSource(dataSourceName, dataSource);

解决方案(配置)

加入以下配置即可解决!

# 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
spring.datasource.druid.validation-query=select 'x'
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
spring.datasource.druid.test-on-borrow=false

druid: https://github.com/alibaba/druid/issues/4277

解决方案(不推荐)

更换druid版本或者sqlserver驱动版本
最后成功方案为:降低druid版本:1.2.8 → 1.2.5

其他参考

druid1.2.6连接sqlserver时出现错误: validateConnection false

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掘金者说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值