我正在用Java编写程序,它连接到MySQL数据库。由于第一类是返回java.sql.Connection
的单一静态方法的类。在调试和连接工作后,我再也没有碰过它。几天前我发现我的程序返回了这个错误:
com.mysql.jdbc.CommunicationsException:
通讯链接失败 由于潜在的例外情况
开始嵌入异常
com.mysql.jdbc.CommunicationsException
消息:
通讯链接 由于潜在的例外导致的失败:
开始嵌入异常
java.io.EOFException MESSAGE:无法读取服务器的响应。 预计4个字节,在连接意外丢失之前读取0。堆栈跟踪:
...
我无法理解的事实是,自从我创建数据库以来,我没有在localhost上更改用户名和密码。我唯一改变的是:在表中添加更多表和更改列,但这不会触发此错误。我对我的项目做的事情是我将字符集从UTF-8更改为UTF-16,但我想它几乎不会影响我的连接方法。
如果我更改连接器并放入类路径连接器v.5.1.22,则返回错误:
用户“root @ localhost”拒绝访问(使用密码:是)
甚至我为用户root声明了所有权限。
答案 0 :(得分:1)
我会建议以下:
- 首先确认两台服务器之间网络是否正常:a。从服务器ping到数据库服务器。湾使用MTR unix工具 确保两台服务器之间的连接。
- 您使用的是连接池吗?如果是,则尝试重新启动服务器。可能很少有连接池中的连接 关闭状态。
醇>
让我们先解决第一个问题。其他问题用户“root @ localhost”拒绝访问(使用密码:YES)是一个独立的问题,我们稍后可以讨论。
答案 1 :(得分:0)
我忘了告诉我正在使用Win 7机器。谢谢你的回复。我在我的池中设置了更多的连接并且它不起作用(我有大约10个数据库连接,当应用程序启动时,池接受15)。
的 BUT !! 强>
我没有忘记我将我的项目编码从UTF-8(我从那时开始)改为Unicode(因为我想在JOptionPane.showMessageDialog();
窗口中使用东欧字母表,因为它是我的原生字母表)。仅仅为了测试,我将charset改回UTF-8,我的连接再次正常工作。老实说......我不明白这一点。