jdbc mysql loginTimeout不能正常工作 [英] jdbc mysql loginTimeout not working

查看:611
本文介绍了jdbc mysql loginTimeout不能正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以解释为什么以下程序在3秒后超时,因为我在
12秒之后设置它。我故意关闭mysql服务器来测试mysql服务器无法访问的情况。

Can someone please explain why the following program timeout after 3 seconds where as I set it to do so after 12 seconds. I deliberately turned off mysql server to test this scenario where mysql server is unreachable.

import java.sql.Connection;
import java.sql.DriverManager;

/**
 *
 * @author dhd
 */
public class TestMysql {

    static Thread trd;

    public static void main(String[] argv) {
        keepTrack();
        try {
            DriverManager.setLoginTimeout(12);
            Class.forName("com.mysql.jdbc.Driver");
            Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/driving", "root", "");
        } catch (Exception ex) {
            System.err.println(ex.getMessage());
            trd.stop();
        }
    }

    public static void keepTrack() {
        trd = new Thread(new Runnable() {
            @Override
            public void run() {
                int i = 1;
                while (true) {
                    System.out.println(i);
                    try {
                        Thread.sleep(1000);
                    } catch (Exception ex) {
                    }
                    i++;
                }
            }
        });
        trd.start();
    }
}

输出为:


run:
1
2
3
Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
BUILD SUCCESSFUL (total time: 3 seconds).

从netbeans运行。在问我为什么需要这个之前,请先回答。谢谢

Run from netbeans. Before asking why i need this please answer first please. Thanks

推荐答案

如果MySQL服务器没有运行,连接不会超时;操作系统立即回复连接被拒绝错误。要使连接超时,您可以做的是配置防火墙以丢弃所有到达MySQL端口的数据包。

If the MySQL server is not running the connection does not time out; the operating system replies with a "connection refused" error immediately. To make the connection time out one thing you can do is configure a fire wall to drop all packets arriving to the MySQL port.

这篇关于jdbc mysql loginTimeout不能正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆