当前位置: 首页 > 知识库问答 >
问题:

Hikari:无法验证连接,因为连接已关闭

西门安宁
2023-03-14

我通过play framework和mariadb客户端使用hikari pool connection,由于我定期更新它们(play 2.6.5->2.6.6和mariadb 2.1.1->2.1.2,但不确定是否相关),我出现了以下错误:

HikariPool-1 - Failed to validate connection org.mariadb.jdbc.MariaDbConnection@31124a47 (Connection.setNetworkTimeout cannot be called on a closed connection)
    at com.zaxxer.hikari.pool.PoolBase.isConnectionAlive(PoolBase.java:184)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:172)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:146)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:85)
    at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)
    at play.api.db.DefaultDatabase.withConnection(Databases.scala:152)
    at play.api.db.DefaultDatabase.withConnection(Databases.scala:148)

我在这里发现了一个相关的问题,并试图将idleTimeout和maxLifetime更改为2分钟和5分钟,但错误仍然发生。

我使用的是HikariCP 2.7.1、play 2.6.6和mariadb-java-client 2.1.2

共有1个答案

伏德义
2023-03-14

尽管您写到通过更改MaxLifetime值没有成功地解决这个问题,但我想指出,它实际上对我有效。将其值设置为590000已删除日志文件中的警告。

客户机的maxlifetime(毫秒)值应该小于MySQL实例的wait_timeout(秒)值。这样,客户端将始终在数据库尝试终止连接之前终止连接。相反,客户端将尝试对关闭的连接执行操作,您将在日志文件中获得上述警告。

要查看MySQL实例的WAIT_TIMEOUT值,可以使用以下查询:

我的灵感来自:https://github.com/brettwooldridge/hikaricp/issues/856。其他非常有用的资源有:https://github.com/brettwooldridge/hikaricp#configuration-knobs-baby和https://mariadb.com/kb/en/library/server-system-variables/#wait_timeout

 类似资料:
  • 我有一个应用程序,它将C3p0与Hibernate5和Hibernate使用。我想尝试使用Hikari,但我无法运行该应用程序。 专家 Hibernate版本为:5.2.17.Final Spring配置 我尝试了上述方法的不同排列,包括将用户名和密码直接传递给数据源: 但是我总是以这个错误结束: 这是由光函数引起的:

  • 我们的项目中有Spring boot/Hibernate/MYSQL应用程序,并使用Hikari作为连接池。服务启动几分钟后,我们发现以下问题: org.springframework.web.util.嵌套异常:请求处理失败;嵌套异常org.springframework.dao.DataAccessResourceFailureExc0019:无法获取JDBC连接;嵌套异常org.hibern

  • 我使用了SQLiteDataBaseHelper类,其getInstance方法更改为synchronize. 作为此答案,但仍然存在问题not fixed。

  • 我不明白为什么如果我之前调用,错误会说数据库是关闭的。请支持!谢谢:)

  • 我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)