解决问题:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe
这段代码是一个 Java 异常错误信息,其中包含了以下关键信息:
- 错误类型:java.sql.SQLNonTransientConnectionException
- 错误描述:Public Key Retrieval is not allowed.
- 抛出异常的位置:com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825)
根据异常信息提示,这是 MySQL 数据库连接时出现的问题。更具体地说,可能是由于连接字符串 URL 中缺少 “allowPublicKeyRetrieval=true” 参数导致的。
为了解决该异常,可以尝试采取以下几种方法:
- 修改 MySQL 数据库连接字符串 URL,在末尾追加 “?allowPublicKeyRetrieval=true” 参数。如:
String url = "jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true&useSSL=false";
- 如果使用的是 Java 8 及以上版本,可以将 SSL 模式设置为“false”,即在 JDBC 驱动程序中通过添加一个额外属性来关闭 SSL:
String url = "jdbc:mysql://localhost:3306/mydatabase?sslMode=DISABLED";
此时可以不需要”allowPublicKeyRetrieval=true”参数选项。
- 更新 MySQL Connector/J 驱动到最新版本。如果您当前正在使用旧版本的 MySQL Connector/J 驱动,则建议您更新驱动程序到最新版本并重试连接,因为较新版本的驱动程序可能会修复一些与公钥检索相关的问题。
希望以上方法能够解决您遇到的问题。