开发者社区> 问答> 正文

com.mysql.jdbc.exceptions.jdbc4.CommunicationsExce

我正在努力使数据库与Java程序进行通讯。

有人可以使用JDBC给我一个快速而肮脏的示例程序吗?

我收到一个非常严重的错误:

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:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2260) at com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:787) at com.mysql.jdbc.JDBC4Connection. (JDBC4Connection.java:49) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:357) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:207) at SqlTest.main(SqlTest.java:22) Caused by: 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:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122) at com.mysql.jdbc.MysqlIO. (MysqlIO.java:344) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2181) ... 12 more Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432) at java.net.Socket.connect(Socket.java:529) at java.net.Socket.connect(Socket.java:478) at java.net.Socket. (Socket.java:375) at java.net.Socket. (Socket.java:218) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256) at com.mysql.jdbc.MysqlIO. (MysqlIO.java:293) ... 13 more 测试文件的内容:

import com.mysql.jdbc.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

public class SqlTest {

public static void main(String [] args) throws Exception {
    // Class.forName( "com.mysql.jdbc.Driver" ); // do this in init
    // // edit the jdbc url 
    Connection conn = DriverManager.getConnection( 
        "jdbc:mysql://localhost:3306/projects?user=user1&password=123");
    // Statement st = conn.createStatement();
    // ResultSet rs = st.executeQuery( "select * from table" );

    System.out.println("Connected?");
}

}

展开
收起
保持可爱mmm 2020-05-08 10:21:57 1034 0
1 条回答
写回答
取消 提交回答
  • 所以,你有一个

    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败 java.net.ConnectException:连接被拒绝

    我引用了这个答案,其中还包含一个逐步的MySQL + JDBC教程:

    如果您使用SQLException: Connection refused或Connection timed out或MySQL专用的CommunicationsException: Communications link failure,则意味着该数据库根本无法访问。可能有以下一种或多种原因:

    JDBC URL中的IP地址或主机名错误。 本地DNS服务器无法识别JDBC URL中的主机名。 JDBC URL中的端口号丢失或错误。 数据库服务器已关闭。 DB服务器不接受TCP / IP连接。 数据库服务器已用尽连接。 Java和DB之间的某种事物正在阻止连接,例如防火墙或代理。

    要解决一个或另一个,请遵循以下建议:

    使用验证并测试它们ping。 刷新DNS或在JDBC URL中使用IP地址。 验证基于my.cnfMySQL DB。 启动数据库。 验证mysqld是否在不带的情况下启动--skip-networking option。 重新启动数据库,并相应地修复您的代码,使其关闭中的连接finally。 禁用防火墙和/或配置防火墙/代理以允许/转发端口。来源:stack overflow

    2020-05-08 10:22:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
从花农到MySQL大 立即下载
从华农到MySQL大神 立即下载
深入MySQL实战 立即下载