Spring Boot BrokenPipe / Communications Exception

时间:2017-08-16 12:58:08

标签: hibernate spring-boot jdbc

我在春季启动应用程序中面临Connection close Exception。

这是我的数据库配置:

# For auto recconect it is necessary
spring.datasource.tomcat.test-on-borrow = true
spring.datasource.tomcat.test-while-idle= true
spring.datasource.tomcat.test-on-return = true
spring.datasource.tomcat.validationQuery=SELECT 1

spring.datasource.tomcat.time-between-eviction-runs-millis = 60000
spring.datasource.tomcat.min-evictable-idle-time-millis = 300000

spring.datasource.tomcat.min-idle = 10
spring.datasource.tomcat.max-idle = 100

# Maximum number of active connections that can be allocated from this pool at the same time.
spring.datasource.tomcat.max-active = 100

例外:

  

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功收到的最后一个数据包是66,612,631   几毫秒之前。成功发送到服务器的最后一个数据包是   66,612,631毫秒之前。比配置的服务器长   值' wait_timeout'。你应该考虑到期和/或   在您的应用程序中使用前测试连接有效性,增加   服务器配置的客户端超时值,或使用   连接器/ J连接属性' autoReconnect = true'避免这种情况   问题

     

java.net.SocketException:Broken pipe

我已经看到很多关于启用autoReconnect的主题,但据我所知,不建议这样做。

1 个答案:

答案 0 :(得分:0)

我将默认数据源提供程序更改为dbcp2,并修复了错误。

spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource

# For auto recconect it is necessary
spring.datasource.dbcp2.test-on-borrow  = true
spring.datasource.dbcp2.test-while-idle = true
spring.datasource.dbcp2.test-on-return  = true
spring.datasource.dbcp2.validationQuery = SELECT 1

spring.datasource.dbcp2.time-between-eviction-runs-millis = 60000
spring.datasource.dbcp2.min-evictable-idle-time-millis = 300000

spring.datasource.dbcp2.min-idle = 10
spring.datasource.dbcp2.max-idle = 100