0

当我尝试连接到我的 MySQL 数据库时,我不断收到此错误:

exception

javax.servlet.ServletException: JDBC Problem: 
root cause

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 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.
root cause

java.net.ConnectException: Connection timed out: connect

这是一些代码:

Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection
                    ("jdbc:mysql://mysql11.000webhost.com/database_name","user_name","password");
        stmt = con.createStatement();
        rs = stmt.executeQuery("INSERT into emailadresses('email') values ('"+email+"')");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(EmailServlet.class.getName()).log(Level.SEVERE, null, ex);
        }catch(SQLException e){
            throw new ServletException("JDBC Problem: ", e);
        }

编辑:我的库中有 mysql-connector-java jar 文件

编辑:发现问题我在托管我的数据库的网站上寻找答案并找到了这个:

JDBC/ODBC is not supported here

真恶心……

4

4 回答 4

1

是的,它不是类路径问题,而是网络问题。由于某种原因,无法从您的客户端计算机与给定主机建立网络连接。所以,是的,可能有很多事情。

  • 服务器实际上没有运行!
  • 主机/IP 错误
  • 防火墙(你这边)
  • 防火墙(另一边)
  • 可能存在任何其他网络问题
于 2012-11-13T14:54:10.000 回答
1

尝试从运行应用程序的机器上的任何数据库客户端(如 sqlyog)连接该数据库。如果客户端的连接也失败,那么肯定是网络问题。

于 2012-11-13T15:15:25.943 回答
1

肯定是网络问题。请注意,您的 tcp 连接不会被拒绝,而是会导致超时错误。根据我的经验,这种行为可能是由未正确完成的 TCP 握手(例如,防火墙丢弃 SYN 数据包)引起的。

于 2012-11-13T15:02:41.323 回答
1

“表示尝试将套接字连接到远程地址和端口时发生错误的信号。通常,连接被远程拒绝(例如,没有进程正在侦听远程地址/端口)”。-来自 Oracle 文档

查看您的连接字符串,确保正确输入了数据库、用户名和密码。

另一个原因可能是您的数据库服务器未启动。

于 2012-11-13T15:11:13.157 回答