在spring-boot jpa hibernate中,在> 4 <24之后连接到Db我有一个使用spring-boot,jpa-hiberanate与mysql的应用程序。我收到此错误日志Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 56,006,037 milliseconds ago. The last packet sent successfully to the server was 56,006,037 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.这是我的application.properties# DataSource settings: set here configurations for the database connectionspring.datasource.url = jdbc:mysql://localhost:3306/testspring.datasource.username = test
spring.datasource.password = test
spring.datasource.driverClassName = com.mysql.jdbc.Driver# Specify the DBMSspring.jpa.database = MYSQL# Show or not log for each sql queryspring.jpa.show-sql = true# Hibernate settings are prefixed with spring.jpa.hibernate.*spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.dialect = org.hibernate.dialect.MySQL5Dialectspring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy要解决这个问题,我可以使用spring.datasource.testOnBorrow=truespring.datasource.validationQuery=SELECT 1但我检查了它不推荐。所以任何人都可以建议我应该怎么做才能克服这个错误
1 回答
莫回无
TA贡献1865条经验 获得超7个赞
最简单的方法是autoReconnect
在JDBC URL中指定属性,尽管这不是推荐的方法。
spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true
当您有活动连接时,这会产生问题,并且在事务发生时会发生某些事情,并且会发生重新连接。在事务开始时验证连接并在开始时获取新连接时,它不会产生问题。
但是,最好在应用程序的生命周期内启用连接验证。为此,您可以指定多个属性。
首先,指定允许池的最大连接数。(有关确定max poolsize的读取,请阅读此内容)。
spring.datasource.max-active=10
您还可能需要指定初始连接数
spring.datasource.initial-size=5
接下来,您要指定空闲连接的最小和最大数量。
spring.datasource.max-idle=5spring.datasource.min-idle=1
要验证连接,您需要指定验证查询以及何时验证。您想要定期验证,而不是从池中检索连接(这是为了防止池中的连接断开)。
spring.datasource.test-while-idle=truespring.datasource.test-on-borrow=truespring.datasource.validation-query=SELECT 1
现在您还在连接空闲时进行验证,您需要指定为连接运行此查询的频率以及何时将连接视为空闲。
spring.datasource.time-between-eviction-runs-millis=5000 (this is the default)spring.datasource.min-evictable-idle-time-millis=60000 (this is also default)
这一切都应该触发您的(空闲)连接的验证,并且当发生异常或空闲时段已经过去时,您的连接将从池中删除。
假设您使用Tomcat JDBC作为连接池,这是一个很好的读取配置的内容和方法。
添加回答
举报
0/150
提交
取消