带有 JAVA 错误的 MySql。最后一个成功发送到服务器的数据包是 0 毫秒前 [重复]
Posted
技术标签:
【中文标题】带有 JAVA 错误的 MySql。最后一个成功发送到服务器的数据包是 0 毫秒前 [重复]【英文标题】:MySql with JAVA error. The last packet sent successfully to the server was 0 milliseconds ago [duplicate] 【发布时间】:2013-01-11 15:49:17 【问题描述】:我已经阅读了很多关于这个异常的信息,但我无法解决我的问题。
mysql 服务器正在工作。
我可以从 NetBeans 连接到它,但我无法从 java 代码连接到它。
Exception in thread "main" 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.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2332)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:243)
at javaapplication3.JavaApplication3.main(JavaApplication3.java:32)
Caused by: java.net.SocketException: Permission denied: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:241)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
... 15 more
Java Result: 1
我可以通过任何方式从 java 代码连接到 Mysql,但从 MysqlWorkBench 和 NetBeans 都可以。 我没有防火墙。我试过127.0.0.1,结果是一样的。
【问题讨论】:
您能否提供导致此错误的代码示例?另外,请指定您的操作系统、您使用的 JDBC 文件以及连接选项。 gist.github.com/4654434 gist.github.com/cf87f9dce231789ea407 Windows 7.来自 NetBeans 文件的标准 MysqlDriver(mysql-connector)。 (我尝试使用从dev.mysql.com/downloads/connector/j下载但结果是一样的。连接选项是piccy.info/view3/4045919/69d57c0c558cb4f6cdbe5de27b15621a/orig) Caused by: java.net.SocketException: Permission denied: connect 看来你没有连接权限,不是网络问题,可能是用户名和密码 【参考方案1】:搜索文件 my.cnf 并注释该行
skip-networking
到
#skip-networking
重启mysql
【讨论】:
在较新的版本中,您必须注释掉#bind-address = 127.0.0.1 非常感谢!你拯救了我的一天! :) 谢谢你和我一起工作。【参考方案2】:尝试在
中指定端口conn = DriverManager.getConnection("jdbc:mysql://localhost/mysql?"
+ "user=root&password=onelife");
我认为你应该有这样的东西:
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?"
+ "user=root&password=onelife");
此外,我的示例中的端口号 (3306) 是默认端口,但您可以在安装 MySQL 时更改它。
我认为指定密码和用户的更好方法是将它们与 URL 分开,如下所示:
connection = DriverManager.getConnection(url, login, password);
【讨论】:
完成。没有结果。端口是 3306。端口正在工作。我可以从 NeatBeans 或 MysqlWorckBench 成功连接。 试试这个 sql-connector code.google.com/p/find-ur-pal/downloads/… 我解决了。很抱歉打扰大家。问题出在 DrWeb 防火墙中。我不知道为什么,但我仍然没有关闭这个程序防火墙正在工作,即使我把它关掉了。【参考方案3】:问题主要是由于 MySQL 服务未运行,因此请确保它已运行。如果不是,请以管理员权限运行此 CMD 以启动它:
sc start [Your MySQL Service name]
【讨论】:
【参考方案4】:这个问题已经用新的 mysql 连接器解决了, 请使用http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.38
我曾经在更新连接器 jar 后收到此错误,问题已解决。
【讨论】:
【参考方案5】:尝试以下建议:
-
您的机器可能有一个静态 IP;将此 IP 映射到
hosts
文件为 localhost
。
尝试通过mysql
命令从您的计算机或网络内登录;如果登录成功,说明 MySQL 运行正常。
【讨论】:
【参考方案6】:有两件事
禁用防火墙(如果有)或添加例外或检查您是否有正确的驱动程序文件。如果有,请禁用任何防病毒软件
并确保您的驱动程序类型为mysql.jdbc.driver
。
【讨论】:
禁用 Windows 防火墙对我有用。【参考方案7】:您的 Java 代码似乎使用的是 IPv6 而不是 IPv4。请尝试使用127.0.0.1
而不是localhost
。例如:您的连接字符串应该是
jdbc:mysql://127.0.0.1:3306/expeditor?zeroDateTimeBehavior=convertToNull&user=root&password=onelife
P.S.:请更新 URL 连接字符串。
【讨论】:
准确阅读帖子。他写道“我试过 127.0.0.1,结果是一样的” 我做到了。结果是一样的。 :-( 我解决了。很抱歉打扰大家。问题出在 DrWeb 防火墙中。我不知道为什么,但我仍然没有关闭这个程序防火墙正在工作,即使我把它关掉了。以上是关于带有 JAVA 错误的 MySql。最后一个成功发送到服务器的数据包是 0 毫秒前 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在使用 Java (Netbeans) 连接到 MySQL 时收到此错误“通信链接失败最后发送的数据包...”? [复制]
带有 Elastic Beanstalk 和 Tomcat 的 AWS RDS -“从服务器成功接收的最后一个数据包是 ___ 秒前”