【发布时间】:2012-05-03 20:21:38
【问题描述】:
我制作了一个访问数据库的 Java 程序。在开发阶段,我使用了一个本地数据库(XAMPP 和 MySQL),但是当我尝试访问 2 个不同的 online 数据库(一个商业数据库和一个免费数据库)时,我在这两种情况下都收到了以下异常:
SQLException:通信链路故障
最后一个成功发送到服务器的数据包是 0 毫秒 前。驱动没有收到服务器发来的任何数据包。
我用 PHP 访问它们没有任何问题。
这是我的代码:
private String user = "user1";
private String pass = "pass1";
private String dbClass = "com.mysql.jdbc.Driver";
private String dbDriver = "jdbc:mysql://db4free.net:3306/DBNAME";
private Connection conn = null;
public boolean connect() {
boolean done = false;
//load driver
try {
Class.forName(dbClass).newInstance();
System.out.println("driver loaded"); // THIS IS BEING RETURNED
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
System.err.println(ex);
}
// Connection
try {
conn = DriverManager.getConnection(dbDriver, user, pass);
System.out.println("connected"); // THIS IS NOT BEING RETURNED
done = true;
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
}
return done;
}
【问题讨论】:
-
我怎么知道?
-
先尝试从命令行mysql客户端连接;看看你能不能达到它。
-
我看不出代码有问题。很可能是数据库周围的服务器配置问题。
-
尝试从命令行连接到数据库,使用 telnet 或者最好是客户端。
-
您可以使用 MySQL 客户端,但如果您连接成功,我会感到惊讶。值得保护的数据应该位于两道防火墙之后,而不仅仅是一道。