我已经安装了 MySQL Workbench 8.0,并试图通过连接器/J 版本 5.1.39 通过 Netbeans 连接到我的数据库。
这是一个在我的 Windows Surface 上运行良好的设置。我正在尝试在我的家用 PC 上复制设置,但遇到了问题。
编码:
String driver = "jdbc:mysql:";
String hostAndPort = "//localhost:3306/";
String database = "bills";
String options = "?autoReconnect=true&useSSL=false";
final String userName = "root";
final String password = "pass";
String url = driver + hostAndPort + database + options;
try(Connection con = DriverManager.getConnection(url, userName, password);
Statement st = con.createStatement())
{
// Do nothing so far
} catch (SQLException ex) {
System.out.println("SQLException:\t" + ex.getMessage());
System.out.println("SQLState:\t" + ex.getSQLState());
System.out.println("VendorError:\t" + ex.getErrorCode());
}
当我尝试运行应用程序时,它会捕获异常并打印:
SQLException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
SQLState: 08001
VendorError: 0
值得一提的是,是的,数据库“账单”存在,用户和密码都正确。我可以使用它们进入 MySQL Workbench 并编辑账单数据库。
我尝试过的事情:
- 我将 Connector/J 目录路径添加到类路径中。
- 我将 Connector/J jar 文件直接添加到项目中。
- 我在项目中添加了“MySQL JDBC Driver”库。
- 我验证了数据库已设置为使用端口 3306 和“标准 (TCP/IP)”连接方法。(我也没有 root 用户的“帐户限制”)
- 我验证了 Windows Defender 防火墙没有阻止 MySQL。(我没有其他防火墙)
- 我验证了 MySQL 服务正在运行
同样,此设置在我的 Surface 上运行良好。我尝试了较新版本的 Connector/J,但遇到了与 MySQL Workbench v. 8 的兼容性问题,因此我决定使用 v. 5.1.39(Connector/J),因为它适用于我的 Surface。
唯一让我知道发生了什么的地方是,当我检查家用电脑上的端口活动并将其与我的表面进行比较时:
在尝试连接到数据库期间观察端口时,我得到以下信息:
为什么我的家用 PC 上没有建立端口连接?这是问题的根源吗?我该如何解决?
如果这不是问题的根源,那为什么我无法连接?