2012-11-13 45 views
0

我不斷收到當我試圖連接到我的MySQL數據庫這個錯誤連接到MySQL數據庫:不能在servlet的

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); 
     } 

編輯:我在我的圖書館

EDIT使用mysql-connector-java的jar文件:發現問題 我一直在尋找,我主持我的數據庫網站上的答案,並發現這一點:

JDBC/ODBC is not supported here 

是S *中正...

+1

你能夠從jvm運行的同一臺機器手動連接嗎? – lynks

+2

其中一個問題可能是因爲您沒有指定端口。它應該看起來像'jdbc:mysql://mysql11.000webhost.com:3306/database_name' –

回答

1

「表示嘗試將套接字連接到遠程地址和端口時發生錯誤,通常是遠程拒絕連接(例如,沒有進程正在監聽遠程地址/端口)」。 - From Oracle Docs

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

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

+0

我認爲問題在於我的連接字符串;我真的很討厭這些東西...似乎無法找到它的問題 – dumazy

+0

試圖阻止你的防火牆服務,它可能會阻止你的連接。 –

+0

我確實阻止了我的防火牆,但它仍然給我帶來了同樣的問題 – dumazy

1

是它不是一個類路徑的問題,它是一個網絡問題。出於某種原因,無法從客戶機建立給定主機的網絡連接。所以是的,可能會有很多事情。

  • 服務器實際上沒有運行!
  • 主機/ IP錯誤
  • 防火牆(你身邊)
  • 防火牆(對方)
  • 任何其他網絡問題有可能是
+0

不要忘記'mysqld'監聽'127.0.0.1'而不是wan ip。那個人吸引了很多人。 – lynks

+0

好吧,服務器正在運行,並且我可以通過phpmyadmin – dumazy

+0

輸入數據庫,通常'phpmyadmin'遠程運行,在服務器上與mysqld'一起運行,所以沒有遠程mysql連接。 – lynks

1

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

1

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