2017-10-13 81 views
-1

我可以從命令行與我創建的用戶訪問我的遠程數據庫,但是當我嘗試從jdbc連接時,我得到數字格式異常。從JDBC遠程訪問mysql時獲取數字格式異常

public static final String URL = "jdbc:mysql://ipv6:3306/Library"; 
public static final String USER = "user"; 
public static final String PASSWORD = "correctpass"; 
conn = DriverManager.getConnection(url, user, password); 

拋出

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "30a:2e1a:2470:7c29:300b:f757:2941:3306"' 

我可以登錄扔終端使用相同的憑據這就是爲什麼我太糊塗了。謝謝您的幫助。

+0

該URL中的主機顯然是錯誤的。如果您可以通過終端進行連接,無所謂。 JVM不喜歡它;修理它! – duffymo

+0

請問你的URL是否包含ipv6?那麼第一個':'必須是'::' – Jens

+0

此驅動程序的早期版本可能不支持ipv6。 – Mena

回答

0

不知道爲什麼你會使用IPV6地址連接,但它可以完成。

public static final String urlString = 「jdbc:mysql://address=(protocol=tcp)(host=your-ipv6-address)(port=3306)/Library」; 
Class.forName(driver); 
public static final String user= "user"; 
public static final String password= "correctpass"; 
DriverManager.setLoginTimeout(getConnectionTimeOut()); 
dbConnection = DriverManager.getConnection(urlString,user,password); 

請嘗試以上操作。由於來自mysql連接的讀取地址,期望在冒號後面讀取端口,並且所有端口都是數字。由於你沒有使用標準地址,它會返回你錯誤,因爲它試圖解析端口(所有數字如預期的 - 但有字母,因此它遇到數字格式異常)。如果您使用的是IPV6,則需要將其聲明爲IPV6。

+0

如果我創建我的新用戶從我的ipv4訪問。我甚至不能從終端登錄。這可能是一個防火牆問題? – dcolton