我使用运行在Windows机器上的MySQL数据库,出于性能原因,我使用命名pipe道连接到它。
使用数据库的(Java)应用程序(通过Hibernate)可以让连接闲置相当长时间,这会导致连接失败,并显示以下消息:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功收到的最后一个数据包是33 558 297毫秒前。 成功发送到服务器的最后一个数据包是33 558 297毫秒前。 比服务器configuration的值'wait_timeout'长。 在应用程序中使用之前,应考虑使用过期和/或testing连接有效性,增加服务器configuration的客户端超时值,或者使用Connector / J连接属性“autoReconnect = true”来避免此问题。
不幸的是, autoReconnectForPools不起作用( autoReconnectForPools也不起作用),但是wait_timeout文档声明wait_timeout只适用于“TCP / IP和Unix套接字文件连接,而不是通过命名pipe道或共享内存进行的连接”。
我怎样才能改变命名pipe道的wait_timeout ?
根据您如何configuration数据源,您可以指定一个设置,如idle-timeout-minutes 。 如果wait_timeout设置为5分钟,则将idle-timeout-minutes为4。
可以为MySQL连接指定的唯一两个超时值是wait_timeout和interactive_timeout 。 如果它作为客户端连接, interactive_timeout也可能适用于命名pipe道。
如果我没有正确记得wait_timeout或interactive_timeout都没有指定,那么缺省值是28800。