簡體   English   中英

無法連接到servlet中的mysql數據庫

[英]can't connect to mysql database in servlet

當我嘗試連接到我的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

那個...

是的,這不是類路徑問題,而是網絡問題。 由於某些原因,無法從客戶端計算機建立到給定主機的網絡連接。 是的,可能有很多事情。

  • 服務器實際上沒有運行!
  • 主機/ IP錯誤
  • 防火牆(您的一側)
  • 防火牆(另一側)
  • 還有其他網絡問題

絕對是網絡問題。 請注意,tcp連接不會被拒絕,而是會導致超時錯誤。 以我的經驗,該行為可能是由於TCP握手未正確完成(例如,防火牆丟棄了SYN數據包)引起的。

“嘗試將套接字連接到遠程地址和端口時發生錯誤的信號。通常,遠程拒絕連接(例如,沒有進程正在偵聽遠程地址/端口)”。 - 從Oracle文檔

查看您的連接字符串,確保正確鍵入了數據庫,用戶名和密碼。

另一個原因可能是數據庫服務器未啟動。

嘗試從運行應用程序的計算機上的任何數據庫客戶端(例如sqlyog)連接該數據庫。 如果連接也從客戶端失敗,則肯定是網絡問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM