Java jdbc超时

Java jdbc超时,java,mysql,jdbc,Java,Mysql,Jdbc,我正试图用java中的singelton类连接到我的数据库。这是我当前的代码: public class Database { public static Database instance; private Connection connection; private Database() { try { Class.forName("com.mysql.jdbc.Driver"); Log.debug("ok"); this.co

我正试图用java中的singelton类连接到我的数据库。这是我当前的代码:

public class Database {

public static Database instance;

private Connection connection;

private Database() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Log.debug("ok");
        this.connection = DriverManager.getConnection("jdbc:mysql://just.not.for.you:3006/database?connectTimeout=5000", "database", "secret");
        Log.debug("ok");
    } catch (ClassNotFoundException e) {
        Log.warn("Cloud not find jdbc driver class");
    } catch (SQLException e) {
        Log.warn("Cloud not connect to database: " + e.getMessage(), e);
    }
}


public static synchronized Database getInstance() {
    if(Database.instance == null) {
        Database.instance = new Database();
    }
    return Database.instance;
}
在我的主类中,我调用Database.getInstance,但什么都没有发生。没有错误,没有超时消息。这似乎是一个无止境的循环。我在第10行看到了第一条调试消息,但在第12行没有看到

有什么问题


编辑:我可以使用mysql workbench与本地计算机连接到远程数据库

我发现您的代码中存在一些问题

将com.mysql.jdbc.Driver替换为新的drivercom.mysql.cj.jdbc.Driver,因为它已被弃用 签出mysql服务器端口,默认端口为3306而不是3006
您是否尝试过将系统属性jdbc.drivers设置为com.mysql.jdbc.Driver或创建文件META-INF/services/java.sql.Driver,并将驱动程序的类名作为其内容?端口号是否正确?您正在尝试连接到端口3006,但端口3306是MySQL的常用端口。您是对的。港口是问题所在。Facepalm\u最新的驱动程序仍然包含com.mysql.jdbc.driver以实现向后兼容性。