无法连接到servlet中的mysql数据库

时间:2012-11-13 14:48:32

标签: java mysql jsp servlets

当我尝试连接到我的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

那个s * cks ......

4 个答案:

答案 0 :(得分:1)

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

  • 服务器实际上没有运行!
  • 主机/ IP错误
  • 防火墙(你方)
  • 防火墙(另一面)
  • 可能存在的任何其他网络问题

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

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