Java com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障
我正在努力让我的数据库与我的Java程序对话 有人能给我一个使用JDBC的快速而肮脏的示例程序吗 我犯了一个相当严重的错误:Java com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障,java,mysql,jdbc,Java,Mysql,Jdbc,我正在努力让我的数据库与我的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
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.<init>(ConnectionImpl.java:787)
at com.mysql.jdbc.JDBC4Connection.<init>(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.<init>(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.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:218)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:293)
... 13 more
下载MySQL-JDBC-Type-4-Treiber(例如从“MySQL-connector-java-5.1.11.zip”下载“MySQL-connector-java-5.1.11-bin.jar”) 您需要在编译和运行时在类路径中嵌入驱动程序jar
Class.forName( "com.mysql.jdbc.Driver" ); // do this in init
// edit the jdbc url
Connection conn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", username, password );
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery( "select * from table" );
我可能在这里找错了方向,但您的异常似乎表明您的MySQL服务器不可用 线程“main”com.mysql.jdbc.exceptions.jdbc4.CommunicationsException中的异常: 通信链路故障成功发送到服务器的最后一个数据包为0 几毫秒前。驱动程序尚未从服务器收到任何数据包。在 如果您尝试(从终端)会发生什么 系统将提示您输入与用户名关联的密码。在您输入正确的密码后,mysql客户端是否连接 如果没有,您可能必须从首选项启动MySQL。您还可以将其设置为在启动时运行。因此,您有一个 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障
java.net.ConnectException:连接被拒绝 我引用其中的内容,其中还包含一个循序渐进的MySQL+JDBC教程: 如果您得到一个
SQLException:Connection-densed
或连接超时
或一个特定于MySQL的通信异常:
通信链路故障
,则表示数据库根本无法访问。这可能有以下一个或多个原因:
ping
验证并测试它们my.cnf
进行验证--跳过网络选项的情况下启动
中最终关闭连接
- 我遇到了相同的错误,因为我试图在不启动mysql服务器的情况下运行我的程序
启动mysql服务器后,一切正常。刚刚经历了这一点
必须通过以下方式使其发挥作用:
(可将其放置在静态块初始化器中)
通过以下方式获得连接:
conn = DriverManager.getConnection(DBURL,<username>,<password>);
注意。当Java出堆时,我发现了这个异常。如果我尝试在RAM中放入许多数据项,首先我捕获“通信链路故障”,然后捕获“OutOfMemoryError”
我记录了它,减少了内存消耗(删除1/2数据),一切正常。在我的情况下,我需要将Localhost替换为实际的数据库服务器IP地址 而不是
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/DBname", "root", "root");
我需要
Connection con = DriverManager.getConnection(
"jdbc:mysql://192.100.0.000:3306/DBname", "root", "root");
我也有同样的问题,下面是如何解决的:
ResultSet(getString(“columnName”)
将两个列名传递给一个对象,但它们与数据库中的列名不匹配我不确定是哪一个解决了这个问题,但它起了作用。另外,请确保为每个表查询创建一个新的
语句
和结果集
。请在/etc/mysql/my.cnf文件中更新您的IP地址
bind-address = 0.0.0.0
重新启动mysql deamon和mysql服务。我的问题通过以下步骤得到解决:
my.cnf
vi /etc/mysql/my.cnf
"bind-address = 0.0.0.0"
sudo /etc/init.d/mysql restart
这可能是一个简单的jar问题。可能您使用的是旧的
mysql连接器java XXX bin.jar
,当前mysql版本不支持该连接器。我在使用mysql 5.5时使用了mysql-connector-java-5.1.18-bin.jar
,这个问题为我解决了。如果您使用WAMP
或XAMP
服务器安装mysql数据库。
然后,您必须显式地启动mysql服务器,否则它会显示
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:连接数据库时通信链路故障
如果更改端口,则会出现此类错误“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障”
请检查您的端口号此
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
如果您的数据库连接长时间处于空闲状态,则会发生异常
此空闲连接在
connection.isClosed()上返回true但若我们尝试执行语句,那个么它将触发这个异常,所以我建议使用数据库池 我用一种简单的方法解决了这个问题,这对我来说很有效。我遇到了seme问题“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障”。在我的db.properties文件中,我有以下内容:url:jdbc:mysql://localhost:90/myDB,
仅删除了端口url,结果是url:jdbc:mysql://localhost/myDB 这对我很有效。我几个小时来一直有同样的问题。我正在使用MAMP服务器
不要使用localhost:[Apache端口],而是使用MySQL端口
下面是MAMP服务器的默认MySQL端口
String url = "jdbc:mysql://localhost:8889/db_name";
Connection conn = DriverManager.getConnection(url, dbUsername, dbPassword);
vi /etc/mysql/my.cnf
"bind-address = 0.0.0.0"
sudo /etc/init.d/mysql restart
String url = "jdbc:mysql://localhost:8889/db_name";
Connection conn = DriverManager.getConnection(url, dbUsername, dbPassword);
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
$ telnet localhost 3306
Trying ::1...
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
mysql -u xxxx -p //local coonection to mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO 'theNewUser'@'remoteIP' IDENTIFIED BY 'passWord';
//Query OK, 0 rows affected (xx sec)
mysql> FLUSH PRIVILEGES;
//Query OK, 0 rows affected
Edit
/etc/mysql/mysql.conf.d/mysqld.cnf or /etc/mysql/my.cnf
Change line: bind-address = 127.0.0.1 to
bind-address = 0.0.0.0
Restart Mysql: /etc/init.d/mysql restart
jdbc.url='jdbc:mysql://remoteIP:3306/yourDbInstance?autoReconnect=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC'
jdbc.user='theNewUser'
[08S01] 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.
dbhost=jdbc:mysql://172.18.23.100:3306/yourdatabase?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
user=root
password=Password#321
con = DriverManager.getConnection(dbhost, user, password);
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.6.2</version>
</dependency>