内部异常:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

时间:2013-04-12 10:16:28

标签: java mysql hibernate

我开发了一个应用程序来捕获数据,检索信息,删除和更新信息。该应用程序是在java swing和hibernate中开发的,并使用MySQL 5.5作为数据库。我在我的本地服务器或本地主机上测试它并且工作正常。所以现在我更进一步尝试访问远程服务器上的数据库。请注意,我在本地服务器上使用的MySQL版本与远程服务器中的MySQL版本相同。

我收到以下错误:

Internal Exception: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Error Code: 0

1 个答案:

答案 0 :(得分:1)

问题是您的MySqlConnector / Driver无法建立与远程服务器的连接。

检查您的jdbc URL,并检查是否使用了错误的端口。 也许Mysql DB无法从外部访问,也可以使用ssh端口转发,例如:

端口转发:

ssh -L3306:127.0.0.1:3306 user@remoteServer 

将您的jdbc网址更改为:

jdbc:mysql://localhost:3306/database

说明:    -L port:host:hostport

  

指定本地(客户端)主机上的给定端口                转发到远程端的给定主机和端口。
  ...
  每当一个                连接到此端口,连接被转发                安全通道,并与主机端口建立连接                来自远程机器的hostport。

来源:http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=1

这意味着您在本地3306端口上使用MySQL JDBC驱动程序(jdbc url)请求 将被转发到他本地3306端口的远程服务器, Mysql数据库列出的位置。