我目前在一个涉及mysql的java程序中工作。我遇到了一个问题这些消息:设置MySql的wait_timeout会话变量
通信链路故障。从服务器成功收到的最后一个数据包 为174,165,153毫秒前。最后一个数据包成功发送到服务器 是4毫秒前。
我相信这与会话变量'wait_timeout'有关。我的假设可能是错误的,所以我在此确认。这真的是因为'wait_timeout'会话变量?这个错误是否意味着我的数据库连接“已过期”,因为会话超时已经失效?如果是的话,我有另一个问题..我不能重现上述错误..
这是我想要复制错误。
设置
wait_timeout
变量5
这是原本28800
(8个小时)。mysql> set session wait_timeout=5;
考虑到我的下一次尝试访问数据库将应用此,我将运行这段代码:
Class.forName("com.mysql.jdbc.Driver"); oConnection = DriverManager.getConnection(sUrl,sUser,sPass); System.out.println("Database Connection Established.\n"); Thread.sleep(6000); executeSimpleQuery();
的
executeSimpleQuery()
功能只是执行一个简单的SELECT * FROM
语句来检查连接是否还在工作。显然,如果wait_timeout只有5,并且让线程休眠6秒,连接现在就会过期,并且应该产生错误。但是,预期的结果不会发生,而是执行查询。
我该怎么做才能复制错误?
非常感谢你这一点。虽然我没有使用wait_timeout的全局设置,因为我需要处理每个会话的连接。再次感谢 – Oneb