Java jdbc超时
我正试图用java中的singelton类连接到我的数据库。这是我当前的代码: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
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以实现向后兼容性。