報錯
ERROR 20760 --- [ restartedMain] com.alibaba.druid.pool.DruidDataSource : testWhileIdle is true, validationQuery not set
完整日誌:
2020-05-03 04:02:47.289 INFO 20760 --- [ restartedMain] com.example.demo.DemoApplication : Starting DemoApplication on jerryjin-MI with PID 20760 (E:\demo\target\classes started by jerryjin in E:\demo)
2020-05-03 04:02:47.292 INFO 20760 --- [ restartedMain] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default
2020-05-03 04:02:47.346 INFO 20760 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2020-05-03 04:02:47.346 INFO 20760 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2020-05-03 04:02:48.278 INFO 20760 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 80 (http)
2020-05-03 04:02:48.285 INFO 20760 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-05-03 04:02:48.285 INFO 20760 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.33]
2020-05-03 04:02:48.357 INFO 20760 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-05-03 04:02:48.357 INFO 20760 --- [ restartedMain] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1011 ms
2020-05-03 04:02:48.369 INFO 20760 --- [ restartedMain] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
2020-05-03 04:02:48.436 ERROR 20760 --- [ restartedMain] com.alibaba.druid.pool.DruidDataSource : testWhileIdle is true, validationQuery not set
2020-05-03 04:02:48.442 INFO 20760 --- [ restartedMain] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
2020-05-03 04:02:48.589 INFO 20760 --- [ restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:file:E:/database/h2/test'
2020-05-03 04:02:48.642 INFO 20760 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
2020-05-03 04:02:48.958 INFO 20760 --- [ restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-05-03 04:02:49.123 INFO 20760 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 80 (http) with context path ''
2020-05-03 04:02:49.126 INFO 20760 --- [ restartedMain] com.example.demo.DemoApplication : Started DemoApplication in 2.21 seconds (JVM running for 3.216)
原因
不知道哪裏的配置打開了它:test-while-idle: true
它打開了validation-query
就必須設置
解決方案
# Spring配置
spring:
datasource:
druid:
# 默認 true 爲 true 時 validationQuery 必須設爲非空字符串
# 申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。
test-on-borrow: false
# 默認 false 爲 true 時 validationQuery 必須設爲非空字符串
# 【建議】配置爲true,不影響性能,並且保證安全性。申請連接的時候檢測,
# 如果空閒時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。
test-while-idle: true
# 默認 true 爲 true 時 validationQuery 必須設爲非空字符串
# 歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。
test-on-return: false
# 用來檢測連接是否有效的sql,要求是一個查詢語句,常用select 'x'。如果validationQuery爲null,
# testOnBorrow、testOnReturn、testWhileIdle都不會起作用。
validation-query: select 1