2017-10-13 39 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