com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи - PullRequest
182 голосов
/ 06 июня 2010

Я работаю над тем, чтобы моя база данных могла общаться с моими программами на 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.<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

Содержимое тестового файла:

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?");
    }
}

Ответы [ 33 ]

3 голосов
/ 04 апреля 2013

Я получил ту же ошибку, потому что я пытался запустить мою программу без запуска сервера MySQL.

После запуска сервера mysql все прошло нормально.

3 голосов
/ 06 июня 2010

Загрузить MySQL-JDBC-Type-4-Treiber (ig 'mysql-connector-java-5.1.11-bin.jar' из 'mysql-connector-java-5.1.11.zip') в Mysql .

Вам нужно включить jar драйвера во время компиляции и выполнения в вашем classpath.

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" );
2 голосов
/ 16 апреля 2015

Я решил эту проблему простым способом, который сработал для меня. у меня была проблема сем "com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи" В моем файле db.properties у меня было это: url: jdbc: mysql: // localhost: 90 / myDB, только удалил URL порта, в результате чего url: jdbc: mysql: // localhost / myDB, и это сработало для меня.

2 голосов
/ 13 ноября 2014

Если вы изменили свой порт, вы получите сообщение об ошибке такого типа "com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи" Пожалуйста, проверьте номер порта

2 голосов
/ 04 ноября 2014

Если вы используете сервер WAMP или XAMP для установки базы данных mysql. Затем вы должны явно запустить MySQL, чтобы он не показывал com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure при соединении с базой данных

2 голосов
/ 12 мая 2013

Только что испытал это.

Нужно заставить его работать с помощью: (это может быть помещено в статический блок инициализатора)

static{ // would have to be surrounded by try catch
    Class.forName("com.mysql.jdbc.Driver");   // this will load the class Driver
}

Также получая соединение через:

conn = DriverManager.getConnection(DBURL,<username>,<password>);

вместо указания параметров входа в систему

  Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/projects?user=user1&password=123");

С уважением.

2 голосов
/ 15 мая 2015

Это случилось со мной, когда я изменил порт mysql с 3306 на 3307 в файлах my.ini и php.ini, но после изменения портов (3307-> 3306) он снова работал нормально.

1 голос
/ 18 мая 2017

Попробуйте изменить localhost на 127.0.0.1.

Локальный хост будет разрешен до ::1. И MySQL не может быть подключен через IPv6 по умолчанию.

А вот вывод telnet localhost 3306:

$ telnet localhost 3306
Trying ::1...

И нет ответа от сервера MySQL.

Конечно, пожалуйста, убедитесь, что ваш сервер MySQL работает.

1 голос
/ 08 ноября 2018

Для Удаленный Вызов Mysql

  1. Добавить удаленного пользователя к Mysql для примера IP = remoteIP:

    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
    
  2. Разрешить удаленный доступ к Mysql (по умолчанию все внешние вызовы запрещены):

    Edit 
    /etc/mysql/mysql.conf.d/mysqld.cnf    or    /etc/mysql/my.cnf
    Change line:  bind-address = 127.0.0.1   to
                  #bind-address = 127.0.0.1
    Restart Mysql: /etc/init.d/mysql restart
    
  3. Для последней версии драйвера JDBC, JDBC:

    jdbc.url='jdbc:mysql://remoteIP:3306/yourDbInstance?autoReconnect=true&amp;useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC'
    jdbc.user='theNewUser'
    
0 голосов
/ 26 марта 2019

У меня такая же ошибка соединения: У меня проблема в том, что я использовал MySQL 8.0.15, но Java Connector - 5.x.x.

Ниже показано, как enter code here я это исправил. 1. скачать 8.0.15. из репозитория Maven: https://search.maven.org/search?q=g:mysql%20AND%20a:mysql-connector-java

  1. В Eclipse IDE выберите «Библиотеки со ссылками» в Explorer Правая кнопка мыши> Путь сборки> Настройка пути сборки а. удалите "mysql-connector-5.x.jar" б. Нажмите «Добавить внешние JAR-файлы ...» и выберите mysql-connector-java-8.0.15.jar.

Перезапустите его, проблема исчезла. \

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...