2

我正在用 Java 编写程序,它连接到 MySQL 数据库。由于第一类是具有单个静态方法返回的类java.sql.Connection。在调试并连接正常后,我再也没有碰过它。几天前,我发现我的程序返回了这个错误:

com.mysql.jdbc.CommunicationsException:
由于底层异常导致通信链接失败

BEGIN NESTED EXCEPTION
com.mysql.jdbc.CommunicationsException

MESSAGE:
由于底层异常导致通信链接失败:

BEGIN NESTED EXCEPTION
java.io.EOFException MESSAGE:无法读取响应服务器。预期为 4 个字节,在连接意外丢失之前读取 0。

堆栈跟踪:

...

  • 我安装了 MySQL Server v. 5.1.62
  • 我正在使用 MySQL/J 连接器 v. 5.0.8(从 mysql.com 下载)
  • 我也把类路径放在 NetBeans sqljdbc4.jar

我无法理解的是,自从我创建数据库以来,我没有在本地主机上更改用户名和密码。我唯一更改的是:添加更多表并更改表中的列,但这不会触发此错误。我对我的项目所做的事情是将字符集从 UTF-8 更改为 UTF-16,但我想它几乎不会影响我的连接方法。

如果我更改连接器并放入类路径连接器 v. 5.1.22,它会返回错误:
用户“root@localhost”的访问被拒绝(使用密码:YES)
即使我声明了用户 root 的所有权限。

4

2 回答 2

1

我将推荐以下内容:

  1. 首先确认两台服务器之间的网络是否正常:从您的服务器 ping 到您的数据库服务器。湾。使用 MTR unix 工具确保两台服务器之间的连接。
  2. 你在使用连接池吗?如果是,则尝试重新启动服务器。连接池中的连接可能很少处于关闭状态。

让我们首先解决第一个问题。其他问题 用户“root@localhost”的访问被拒绝(使用密码:YES)是一个独立的问题,我们可以稍后讨论。

于 2013-01-09T15:35:01.973 回答
0

我忘了告诉我正在使用 Win 7 机器。谢谢你的回复。我在我的池中设置了更多连接,但它不起作用(当应用程序启动并且池接受 15 个时,我有大约 10 个与数据库的连接)。
但!!
我没有忘记我将项目的编码从 UTF-8(我从一开始就有)更改为 Unicode(因为我想在 Windows 中使用东欧字母JOptionPane.showMessageDialog();,因为它是我的本地字母)。只是为了测试,我将字符集改回 UTF-8,我的连接再次正常工作。老实说...我不明白这一点。

于 2013-01-15T09:15:22.040 回答