从JDBC远程访问mysql时获取数字格式异常
问题描述:
我可以从命令行与我创建的用户访问我的远程数据库,但是当我尝试从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"'
我可以登录扔终端使用相同的凭据这就是为什么我太糊涂了。谢谢您的帮助。
答
不知道为什么你会使用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
该URL中的主机显然是错误的。如果您可以通过终端进行连接,无所谓。 JVM不喜欢它;修理它! – duffymo
请问你的URL是否包含ipv6?那么第一个':'必须是'::' – Jens
此驱动程序的早期版本可能不支持ipv6。 – Mena