我可以从命令行使用我创建的用户访问我的远程数据库但是当我尝试从jdbc连接时,我得到数字格式异常。
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 :(得分: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。