Подтвердить что ты не робот

MySql с ошибкой JAVA. Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад

Я много читал об этом исключении, но я не могу решить.

Сервер 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

Я поймаю это исключение любыми способами подключения к Mysql из java-кода, но из MysqlWorkBench и из NetBeans в порядке. У меня нет брандмауэра. Я пробовал 127.0.0.1, результат такой же.

4b9b3361

Ответ 1

Попробуйте указать порт в

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);

Ответ 2

Проблема в основном из-за того, что служба MySQL не запущена, поэтому убедитесь, что это так. Если это не так, запустите этот CMD с правами администратора, чтобы запустить его:

sc start [Your MySQL Service name]

Ответ 3

Найдите файл my.cnf и прокомментируйте строку

skip-networking

к

#skip-networking

Перезапустить mysql

Ответ 4

Попробуйте следующие предложения:

  1. Ваша машина может иметь статический IP; сопоставьте этот IP-адрес с файлом hosts как localhost.
  2. Попробуйте войти в систему со своего компьютера или в сети с помощью команды mysql; если вход в систему успешен, это означает, что MySQL работает нормально.

Ответ 5

Эта проблема была исправлена ​​с помощью новых соединителей mysql, используйте http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.38

Я использовал эту ошибку после обновления соединительной банки, проблема решена.

Ответ 6

Похоже, ваш код 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.

Ответ 7

Есть две вещи

  • Отключите брандмауэр, если он есть, или добавьте исключение или проверьте, есть ли у вас правильный файл драйвера. Отключите любой антивирус, если он есть

  • а также убедитесь, что ваш тип драйвера mysql.jdbc.driver.