Java 设置MySql wait\u timeout会话变量

Java 设置MySql wait\u timeout会话变量,java,mysql,Java,Mysql,我目前在一个涉及mysql的java程序中工作。我在以下消息中遇到了问题: 通信链路故障。成功接收最后一个数据包 从服务器发送的数据是174165153毫秒前的数据。最后发送的数据包 4毫秒前已成功连接到服务器 我相信这与会话变量“wait_timeout”有关。我的假设可能是错误的,所以我在这里证实。这真的是因为“wait\u timeout”会话变量吗?这个错误是否意味着我的数据库连接“过期”,即会话超时已经过期?如果是,我还有一个问题。。我无法重现所说的错误 这就是我试图复制错误的原因 将

我目前在一个涉及mysql的java程序中工作。我在以下消息中遇到了问题:

通信链路故障。成功接收最后一个数据包 从服务器发送的数据是174165153毫秒前的数据。最后发送的数据包 4毫秒前已成功连接到服务器

我相信这与会话变量“wait_timeout”有关。我的假设可能是错误的,所以我在这里证实。这真的是因为“wait\u timeout”会话变量吗?这个错误是否意味着我的数据库连接“过期”,即会话超时已经过期?如果是,我还有一个问题。。我无法重现所说的错误

这就是我试图复制错误的原因

  • wait_timeout
    变量设置为
    5
    ,原来是
    28800
    (8小时)

    mysql>设置会话等待\u超时=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_超时仅为5,并且我已使线程休眠6秒,那么连接现在将过期,并且应该产生错误。但是,预期结果不会发生,而是执行查询


  • 我应该如何复制错误?

    您为当前会话设置了wait\u timeout=5;然后打开另一个会话(在java应用程序中)并执行查询。尝试在打开连接后设置此变量,或全局设置

    比如说-

    SET @@global.wait_timeout = 15; -- Set global variable
    SET @@local.wait_timeout = 25; -- Set session variable
    SELECT @@global.wait_timeout, @@local.wait_timeout; -- Check global and session variables
    

    非常感谢。虽然我没有使用等待超时的全局设置,因为我需要处理每个会话的连接。再次感谢