【问题标题】:Getting number format exception when accessing mysql from JDBC remotely从JDBC远程访问mysql时出现数字格式异常
【发布时间】:2018-03-25 14:32:26
【问题描述】:

我可以使用我创建的用户从命令行访问我的远程数据库,但是当我尝试从 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"'

我可以使用相同的凭据登录并抛出终端,这就是我如此困惑的原因。感谢您的帮助。

【问题讨论】:

  • 网址中的那个主机显然是错误的。是否可以通过终端连接没关系。 JVM 不喜欢它;修复它!
  • 您的 URL 是否包含 ipv6?那么第一个: 必须是::
  • 驱动的早期版本可能不支持 ipv6。

标签: java mysql jdbc connection


【解决方案1】:

不确定为什么要使用 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。

【讨论】:

  • 如果我创建了可以从我的 ipv4 访问的新用户。我什至无法从终端登录。这可能是防火墙问题吗?
猜你喜欢
  • 2010-12-31
  • 1970-01-01
  • 2019-07-14
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多