2014-02-08 159 views
0

我無法連接到我的「實時服務器」上的mysql數據庫,但它在我的本地計算機上工作得很好。無法創建連接到數據庫服務器 - java mysql連接器

在我的主類我這樣做:

try { 
    main.connection.open(); 
} catch (SQLException e1) { 
    log.fatal(e1.getMessage()); 
    System.exit(0); 
} 

和開放的方法是這樣的

public void open() throws SQLException{ 
    if(con != null) close(); 
    con = DriverManager.getConnection(url, user, password); 
} 

運行我得到這個一兩分鐘後:

14:35:47.434 [main] FATAL se.mypack.Server - 無法創建與數據庫服務器的連接。嘗試重新連接3次。放棄。

如何調試? url,服務器和密碼變量是正確的。這裏可能是什麼問題?

使用的MySQL連接器的Java-5.1.29-bin.jar

+0

再次檢查您的憑證。你應該100%認爲他們是對的。另請參閱用戶是否有權訪問此數據庫 - 確保使用「GRANT」命令爲該用戶授予權限。 –

+0

已完成。在php中使用相同的憑據進行連接。而且用戶還擁有本地主機的權限,這是我正在使用的服務器。我是否需要爲服務器本地IP設置權限?例如。 192.168.0.4 – daker

+0

是的,如果您嘗試從您的計算機進行連接,則需要在實時數據庫上執行此操作。你需要給你的機器的外部IP權限(你可以看到如果你ssh進入它 - 如果它是一個linux環境) - 看到這個:http://stackoverflow.com/a/8348560/ 728610 –

回答

-1

首先,你必須確保你已經裝載您的數據庫驅動程序類。 它如下所示: Class.forName(「org.apache.derby.jdbc.EmbeddedDriver」);

這是用於DERBY DB的。 每個數據庫都有不同的驅動程序類,但想法是一樣的。

如果您已經做到了,請檢查您是否嘗試建立連接的客戶端機器 與數據庫服務器有tcp連接。你可以使用:ping -t your.server.ip。 如果得到響應,嘗試建立telet連接到該URL +端口號(數據庫監聽器偵聽的端口,對於Oracle它將是1521,對於Derby它是1527 ..),並且看到你沒有獲取任何連接拒絕消息。 如果連接嘗試失敗,請查看數據庫偵聽器是否啓動,或者是否存在防火牆問題。

好運, Yosi利