【发布时间】:2011-01-07 08:34:19
【问题描述】:
我在尝试使用以下代码获取数据库连接时遇到问题:
try {
Class.forName("com.mysql.jdbc.Driver");
Properties p = new Properties();
p.put("user", user_name);
p.put("password", password);
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1/jsp_test", p);
} catch (SQLException ex) {
// handle any errors
ex.printStackTrace();
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
return false;
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
输出的错误信息是:
/usr/lib/jvm/java-6-openjdk/bin/java -Didea.launcher.port=7532 -Didea.launcher.bin.path=/usr/bin/idea/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/java-6-openjdk/jre/lib/jce.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/about. jar:/usr/lib/jvm/java-6-openjdk/jre/lib/resources.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/management-agent.jar:/usr/lib /jvm/java-6-openjdk/jre/lib/jsse.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/charsets.jar:/usr/lib/jvm/java-6-openjdk /jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext /sunjce_provider.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/dnsns.jar :/家庭/就寝时间/Java 项目/db_demo/out/production/db_demo:/opt/java/jre/lib/ext/mysql-connector-java-5.1.10-bin.jar:/usr/bin/idea/lib/idea_rt.jar com.intellij .rt.execution.application.AppMain 主要的 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障
最后一个数据包成功发送到 服务器是 0 毫秒前。这 驱动程序没有收到任何数据包 从服务器。在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:532) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:406) 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2214) 在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:781) 在 com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:46) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:532) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:406) 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284) 在 java.sql.DriverManager.getConnection(DriverManager.java:620) 在 java.sql.DriverManager.getConnection(DriverManager.java:169) 在 数据库.Database.connect(Database.java:80) 在 Main.main(Main.java:13) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:616) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:110) 造成的: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障
最后一个数据包成功发送到 服务器是 0 毫秒前。这 驱动程序没有收到任何数据包 从服务器。在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:532) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:406) 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) 在 com.mysql.jdbc.MysqlIO.(MysqlIO.java:343) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137) ... 18 更多原因: java.net.ConnectException:连接 拒绝在 java.net.PlainSocketImpl.socketConnect(本机 方法)在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) 在 java.net.Socket.connect(Socket.java:542) 在 java.net.Socket.connect(Socket.java:492) 在 java.net.Socket.(Socket.java:389) 在 java.net.Socket.(Socket.java:232) 在 com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253) 在 com.mysql.jdbc.MysqlIO.(MysqlIO.java:292) ... 还有 19 个 SQLException: 通讯链路故障
最后一个数据包成功发送到 服务器是 0 毫秒前。这 驱动程序没有收到任何数据包 从服务器。 SQL 状态:08S01 供应商错误:0
进程以退出代码 0 结束
从字面上看,我不知道如何解决此错误消息。数据库存在。用户名和密码存在。我目前没有向数据库中添加任何表,但我认为这不是问题,因为毕竟我只是建立连接......
如果需要,我可以提供额外的信息。我觉得我已经尝试了很多。有人知道如何获取有关失败的方式和原因的更多信息吗?
感谢您的帮助! :)
【问题讨论】:
-
可以直接连接(使用mysql客户端)吗?回溯中唯一有用的部分是
08S01,mysql 文档中提到了一些关于它的内容 (dev.mysql.com/doc/refman/5.0/en/…)。 -
您是否尝试过使用 url “jdbc:mysql://localhost/jsp_test”?大多只是一个随机的调试猜测。
-
我可以使用 mysql 客户端和我的用户名“jsp_test”直接连接。如果我将 127.0.0.1 更改为 localhost,我仍然无法连接。谢谢你的链接,我去看看。我想知道其他人是否可以尝试用他们自己的机器和 mysql-connector-java-5.1.10-bin.jar 做同样的事情