springboot连接数据库报错testWhileIdle is true, validationQuery not set
问题描述:
使用springboot连接数据库,启动的时候报错:testWhileIdle is true, validationQuery not set。但是不影响系统使用,数据库等一切访问正常。
application.properties数据源配置如下:
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.initial-size=1
spring.datasource.maximum-pool-size=10
spring.datasource.connection-timeout=5000
问题分析:
查了这句话的意思:空闲的时候进行检测是开启的,但是检测的查询语句没有设置。大致意思就是说,当数据库没有接收到请求时,会进行数据库连接检测,检查数据库是否还是连着的。检查数据库是否断开需要发送sql语句。报错是说这个sql语句没有设置。
那么解决思路有两个:
1、设置不进行空闲时连接检测。
2、开启空闲时连接检测,并设置检测用的sql语句。
先查了资料,说testWhileIdle默认是false的,这是竟然是true,整个代码搜索了一下,也没有见到设置testWhileIdle的地方,推测应该是版本不一样,新版本jar包里面默认设置为true。
好吧,先不管这些,既然都是数据库的设置,那么应该可以在配置数据源的时候加上这些配置,网上搜索了配置的写法,如下:
spring.datasource.test-while-idle=true
spring.datasource.validation-query=SELECT 1
但是发现还是不起作用,仍然报错。
有些不可理解,同样是数据源的配置,为什么上面的连接url、用户名、密码可以生效,下面的就不生效呢?
再次搜索答案,发现有介绍了:
springboot1.4取消spring.datasource.type
在新版本中,validationQuery没有自动注入,那么就需要手动声明datasource bean。至于怎么写,可以看上面的文章。
主要是手动注入DruidDataSource,声明一个配置类,数据源各个值都注入进去,返回DruidDataSource。
再启动,系统不报错了!
最后查看了DruidDataSource源代码,
public static final String DEFAULT_VALIDATION_QUERY = null;
果然,DruidDataSource默认testWhileIdle=true,并且validationQuery设置为空。
总结:
1、首先要理解错误,明白错误的意思。
2、从错误出发,分析导致错误的原因,针对这些能找到哪些解决方法。
3、再搜索资料,网上的资料都太乱了,版本不一致、环境不一样等有很多影响因素,需要一一进行实验。
4、看源代码也是很不错的解决问题办法。
转载于:https://www.cnblogs.com/leanfish/p/9593636.html
springboot连接数据库报错testWhileIdle is true, validationQuery not set相关推荐
- 严重: maxIdle is deprecated,严重: testWhileIdle is true, validationQuery not set,Druid连接池连接MSQL报错处理
JDK9 引发的血案 1.因为使用mysql-connector的依赖版本对应的mysql数据库冲突,mysql8需要使用8.0.11以上的高版本2.jdk9的反射本身存在BUG,会有warning ...
- SpringBoot项目报错解决:“Error starting ApplicationContext. To display the conditions report re-run ...”
SpringBoot项目报错:Error starting ApplicationContext. To display the conditions report re-run your appli ...
- com.alibaba.druid.pool.DruidDataSource : testWhileIdle is true, validationQuery not set
2019-10-13 16:37:56.965 ERROR 8088 --- [on(6)-127.0.0.1] com.alibaba.druid.pool.DruidDataSource : ...
- idea使用Database连接数据库报错ssm证书验证失败无法建立安全连接
项目场景: idea使用Database连接数据库报错ssm证书验证失败无法建立安全连接 问题描述 [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接 ...
- Springboot运行报错BeanCreationException
项目场景: Springboot运行报错BeanCreationException: Error creating bean with name 问题描述: BeanCreationException ...
- SpringBoot启动报错:HikariPool-1 - Exception during pool initialization.解决办法
SpringBoot启动报错:HikariPool-1 - Exception during pool initialization. 记一次Maven项目部署http访问mysql数据库过程中的问题 ...
- 【c语言 gcc9.1.0环境下编译报错】error: ‘true’ undeclared (first use in this function)
问题 网上验证一个单链表是否有环的c语言demo,放到gcc9.1.0的环境下编译,发现编译报错: error: 'true' undeclared (first use in this functi ...
- springboot启动报错:Unregistering JMX-exposed beans on shutdown
环境 1,maven 3.5.0 2,eclipse 4.7.1 3,spring boot 1.5.9.RELEASE springboot启动报错 按照spring 用户手册创建新的spring ...
- PLSQL Developer连接数据库报错ora-12514解决
PLSQL Developer连接数据库报错ora-12514解决 就这个错误纠结了好几天了,现在已经完美解决.现在把具体解决思路及方法记录下来,希望能够帮助更多像我这样纠结的人,高手大神们跳过.不多 ...
最新文章
- POJ 2396 构造矩阵(上下流)
- java cindy_java枚举应用
- IDEA git修改远程仓库地址
- vs2005 pro 在浏览器查看下的一个问题!
- 大数据_Flink_数据处理_案例WorldCount_批处理版---Flink工作笔记0008
- nginx平滑升级至最新版的nginx-1.9.5
- SWMM与Python的那些事 (一)
- acer软件保护卡怎么解除_Acer软件保护卡使用说明资料
- 18. shell当中的until,until语法,无限循环,until示例
- mac mini u盘安装系统_如何制作U盘启动盘安装操作系统
- 数据处理奇技巧——hive篇
- 远心镜头与普通镜头拍摄工件孔径对比
- 两种依赖注入的类型是什么?
- 用于微信小程序的图文编辑器(富文本编辑器)
- BCI Competition 2008 – Graz dataset A个人翻译(附MATLAB安装BioSig)
- Java数据结构--Linkedlist
- 如何优雅的在ubuntu终端中使用复制粘贴
- c语言将两幅bmp格式图片拼接图片
- What's the difference between Atomic and Ordinary database engine
- 神经网络适用于分类问题的最后一层-Softmax和交叉熵损失介绍及梯度推导