springboot连接数据库报错testWhileIdle is true, validationQuery not set

时间:2022-09-03 13:37:34

问题描述:

  使用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源代码,

springboot连接数据库报错testWhileIdle is true, validationQuery not set

  public static final String DEFAULT_VALIDATION_QUERY = null;

  果然,DruidDataSource默认testWhileIdle=true,并且validationQuery设置为空。

总结:

  1、首先要理解错误,明白错误的意思。

  2、从错误出发,分析导致错误的原因,针对这些能找到哪些解决方法。

  3、再搜索资料,网上的资料都太乱了,版本不一致、环境不一样等有很多影响因素,需要一一进行实验。

  4、看源代码也是很不错的解决问题办法。

springboot连接数据库报错testWhileIdle is true, validationQuery not set的更多相关文章

  1. canal部署启动的时候报错com.alibaba.druid.pool.DruidDataSource - testWhileIdle is true, validationQuery not set

    报错信息:com.alibaba.druid.pool.DruidDataSource - testWhileIdle is true, validationQuery not set 解决方法: 找 ...

  2. springboot 启动报错"No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available"

    1.问题 springboot启动报错 "D:\Program Files\Java\jdk-11\bin\java.exe" -XX:TieredStopAtLevel=1 -n ...

  3. spring boot中连接数据库报错500(mybatis)

    spring boot中连接数据库报错500(mybatis) pom.xml中的依赖 <!-- 集成mybatis--> <dependency> <groupId&g ...

  4. SpringBoot启动报错:ould not be registered&period; A bean with that name has already been defined in file and overriding is disabled&period;

    SpringBoot启动报错 ***************************APPLICATION FAILED TO START*************************** Des ...

  5. sqlplus 连接数据库报错SP2-0642&colon; SQL&ast;Plus internal error state 2130&comma; context 0&colon;0&colon;0

    sqlplus 连接数据库报错SP2-0642: SQL*Plus internal error state 2130, context 0:0:0 问题描述: 使用sqlplus客户端登录数据库,报 ...

  6. TP连接数据库报错:SQLSTATE&lbrack;HY000&rsqb; &lbrack;2002&rsqb; No such file or directory

     连接数据库报错:“SQLSTATE[HY000] [2002] No such file or directory”. 出现这个问题的原因是PDO无法找到mysql.sock或者mysqld.soc ...

  7. Javassm连接数据库报错129 ERROR &lbrack;com&period;alibaba&period;druid&period;pool&period;DruidDataSource&rsqb; - &lbrace;dataSource-1&rcub; init error

    Javassm连接数据库报错129 ERROR [com.alibaba.druid.pool.DruidDataSource] - {dataSource-1} init error 发现jdbc这 ...

  8. 运行springboot项目报错:Field userMapper in XX required a bean of type &&num;39&semi;xx&&num;39&semi; that could not be found&period;

    运行springboot项目报错: *************************** APPLICATION FAILED TO START ************************** ...

  9. ArcCatalog连接数据库报错

    ArcCatalog连接数据库报错: Failed to connect to database. Cannot connect to database because the database cl ...

随机推荐

  1. maven&plus;spark2&period;0&period;0最大连通分量

    运用到了spark2.0.0的grarhx包,要手动的在pom.xml里面添加依赖包,要什么就在里面添加依赖,然后在run->maven install

  2. HTML之电话&colon; 邮箱&colon; 网址

    <p> 电话: <a href="tel:电话">电话</a> </p> <p> 邮箱: <a href=&quo ...

  3. 初始maven

    Apache Maven 是一个软件项目管理和综合工具.基于项目对象模型 (POM) 的概念,Maven 可以管理一个项目的生成. 报告和文档从一块*的信息.在JavaEE中,我们可以使用Maven ...

  4. &lbrack;AngularJS&rsqb; Error&colon; &dollar;location&colon;nobase

    In AngularJS 1.3.x, using $locationProvider.html5Mode(ture), will cause a Error:$location:nobase err ...

  5. 关于Bean&bsol;Entity&bsol;Model&bsol;POJO的一些个人理解

    本文没有长篇累牍的,严格的,标准的表述,只是我在开发过程中,读书过程中的一些个人理解,可能不太准备,但是我觉得应该是最方便初学者理解的吧? 一.Bean 对于Bean而言,我的理解是只要是Java的类 ...

  6. java中Collections&period;sort&lpar;&rpar;方法实现集合排序

    1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>();   //定 ...

  7. Ambari2&period;6&period;2 HDP2&period;6&period;5 大数据集群搭建

    Ambari 2.6.2 中 HDFS-2.7.3 YARN-2.7.3 HIVE-1.2.1 HBASE-1.1.2 ZOOKEEPER-3.4.6 SPARK-2.3.0 注:本文基于root用户 ...

  8. MapReduce编程之Semi Join多种应用场景与使用

    Map Join 实现方式一 ● 使用场景:一个大表(整张表内存放不下,但表中的key内存放得下),一个超大表 ● 实现方式:分布式缓存 ● 用法: SemiJoin就是所谓的半连接,其实仔细一看就是 ...

  9. 第二次作业(WordCount)

    1 Github项目地址:https://gitee.com/DamonGetup/WordCount/tree/master 2 对程序设计语言源文件统计字符数.单词数.行数,统计结果以指定格式输出 ...

  10. php&period;ini优化,,,php-fpm

    无论是apache还是nginx,php.ini都是合适的.而php-fpm.conf适合nginx+fcgi的配置. 1)打开PHP的安全模式 PHP的安全模式是个非常重要的PHP内嵌的安全机制,能 ...