com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи

226

Я работаю над тем, чтобы заставить мою базу данных общаться с моими программами на 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?");
    }
}
Джош К
источник
17
Я был глупым. Сервер MySQL не был запущен :( Он был успешным после его запуска.
akfaisel

Ответы:

252

Итак, у вас есть

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой канала связи
java.net.ConnectException: соединение отклонено

Я цитирую этот ответ, который также содержит пошаговое руководство по MySQL + JDBC:

Если Вы получаете SQLException: Connection refusedили Connection timed outили MySQL специфические CommunicationsException: Communications link failure, то это означает , что DB не доступен на всех. Это может иметь одну или несколько из следующих причин:

  1. IP-адрес или имя хоста в URL JDBC неверны.
  2. Имя хоста в URL JDBC не распознается локальным DNS-сервером.
  3. Номер порта отсутствует или неверен в URL JDBC.
  4. Сервер БД не работает.
  5. Сервер БД не принимает соединения TCP / IP.
  6. На сервере БД закончились соединения.
  7. Что-то среднее между Java и DB блокирует соединения, например, брандмауэр или прокси.

Чтобы решить один или другой, следуйте следующим советам:

  1. Проверьте и проверьте их с помощью ping.
  2. Обновите DNS или используйте вместо этого IP-адрес в URL JDBC.
  3. Проверьте это на основе my.cnfбазы данных MySQL.
  4. Запустите БД.
  5. Убедитесь, что mysqld запущен без --skip-networking option.
  6. Перезапустите БД и исправьте ваш код, чтобы он закрывал соединения finally.
  7. Отключите брандмауэр и / или настройте брандмауэр / прокси для разрешения / переадресации порта.

Смотрите также:

BalusC
источник
4
MAMP / MAMP Pro по умолчанию устанавливает MAMP_skip-network_MAMP. Вы должны отключить эту строку в вашем my.cfn
Jurik
6
Не в этом случае, но сбой линии связи также происходит, когда вы используете пул соединений и соединения закрыты из-за длительного бездействия. Только в этом случае он говорит: «Последний пакет был получен несколько« Х »секунд назад»
Никель
@nikel Разве нельзя поддерживать активные потоки в пуле соединений с помощью запроса проверки «select 1»? Зачем им закрываться из-за длительного бездействия, когда мы установили evictor на работу с более короткими интервалами времени, чем таймаут сервера mysql?
Фархад
Да, запрос проверки может исправить это. Моя точка
зрения касалась
Иногда порт отсутствует в строке подключения, и драйвер попытается подключиться к порту по умолчанию 3306 mysql и потерпит неудачу, если mysql не работает на этом порту. Это была моя проблема, поэтому я должен упомянуть, если кто-то найдет это полезным.
Абдул Маннан
10

Я ловлю это исключение, когда Java из кучи. Если я попытаюсь поместить в оперативную память много элементов данных - сначала я поймаю Ошибка канала связи », а затем « OutOfMemoryError ».

Я зарегистрировал это, и я уменьшаю потребление памяти (удаляю 1/2 данных) и все в порядке.

user1694306
источник
9

В моем случае мне нужно было заменить 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");
sureshAngamuthu
источник
Последнее обновление 5/5/18: В настоящее время я использую MySQL Workbench 6.3. Я пришел сюда, чтобы проверить решение, но нашел его самостоятельно, просто ваш сервер MySQL не запущен или остановлен. Я перезапустил свой сервер, он работал как шарм.
Абхишек Экаант
7
Это «лучшее решение», почему? Какую проблему это решает и как?
Маркиз Лорн
это решение не может генерировать фреймы данных
Алан
8

Это com.mysql.jdbc.exceptions.jdbc4.CommunicationsExceptionисключение возникает, если ваше соединение с базой данных не используется долгое время.

Это незанятое соединение возвращает true, connection.isClosed();но если мы попытаемся выполнить оператор, то это исключение будет запущено, поэтому я предлагаю перейти к пулу базы данных.

Йогеш Фунд
источник
2
Это также происходит по другим причинам, таким как «отказано в соединении».
Маркиз Лорн
6

У меня была такая же проблема в течение нескольких часов. Я использую MAMP Server

Вместо использования localhost: [Apache Port] используйте ваш порт MySQL.

Ниже приведен порт MySQL по умолчанию для сервера MAMP.

String url = "jdbc:mysql://localhost:8889/db_name";

Connection conn = DriverManager.getConnection(url, dbUsername, dbPassword);
Абдул Рахим Мохамад
источник
если у вас есть mamp до установки Mysql, попробуйте этот метод
ДЭВИС БЕННИ 15MIS0426
5

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

Исключение в потоке "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой канала связи. Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов с сервера. в...

Что произойдет, если вы попробуете (из терминала)

mysql -u username -p

Вам будет предложено ввести пароль, связанный с именем пользователя. После ввода правильного пароля подключается ли клиент mysql?

Возможно, вам придется запустить MySQL из настроек, если нет. Вы также можете настроить его запуск при запуске.

Карл Уолш
источник
1
Я использую MAMP для запуска моего сервера MySQL. Это будет проблемой?
Джош К
Когда я подключаюсь (через Sequal Pro) к своему, localhostя использую правильное имя пользователя / пароль, и он работает нормально.
Джош К
5

В моем случае оказалось, что версия mysql-connector-javaбыла слишком старой.

В моей демонстрации я как-то использую mysql-connector-javaэто:

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

И моя версия MySQL была 5.1.48 (да, она старая, просто для имитации версии продукта). Поэтому я встретил ту же ошибку.

Поскольку причина найдена, решение найдено. Подходим к версии!

shellbye
источник
4
Вряд ли. Все эти версии драйверов должны быть обратно совместимыми.
маркиз Лорн
1
Эта проблема , как представляется, фиксируется в новых коннекторов MySQL см stackoverflow.com/questions/14559794/...
Ниши
То же самое для меня. Версия драйвера для MySQL 5, а для сервера - 8. Поэтому я обновил версию jar и проблема была решена.
edenPan
4

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

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

rs2012
источник
4

Более ранние ответы уместны. Но я также хотел бы указать на более общую проблему.

Я столкнулся с подобной проблемой, и причиной было сетевое ограничение моей компании.

То же соединение было успешным, когда я был в любой другой сети.

user3251882
источник
1
Этот указатель решил мою проблему, указав, что localhost работал при подключении к VPN, но не работал, если я отключился от VPN, однако я исправил это, изменив localhost на 127.0.0.1
gannu_lee
4

Пожалуйста, обновите ваш IP-адрес в файле /etc/mysql/my.cnf

bind-address  = 0.0.0.0

Перезапустите службы mysql deamon и mysql.

Шридхар Г.С.
источник
1
Отредактировано для использования действительного адреса привязки
OneCricketeer
3

Загрузите 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" );
укладчик
источник
Нет, дает мне кучу ошибок о том, что я ничего не нашел. Можно ли будет импортировать это без файла JAR?
Джош К
@ Боже, это работает, тебе просто нужно правильно настроить путь к классам. (Или скопируйте jar в ваш каталог% JAVA_HOME% \ jre \ lib \ ext, но это считается плохой практикой)
укладчик
3

Эта ошибка также может произойти, если Java пытается подключиться к MySQL через SSL, но что-то идет не так. (В моем случае я настраивал пулы соединений Payara Server 5.193.1 для MySQL.)

Некоторые люди предложили установку useSSL=false. Однако, начиная с версии Connector / J 8.0.13, этот параметр устарел. Вот выдержка из свойств конфигурации MySQL Connector / J 8.0 :

sslMode

По умолчанию сетевые соединения зашифрованы SSL; это свойство позволяет отключать безопасные соединения или выбирать другие уровни безопасности. Допустимы следующие значения: DISABLED- устанавливать незашифрованные соединения; PREFERRED- (по умолчанию) устанавливать зашифрованные соединения, если сервер их разрешил, в противном случае использовать незашифрованные соединения; REQUIRED- установить безопасные соединения, если сервер их разрешил, иначе не получится; VERIFY_CA- Подобно, REQUIREDно дополнительно проверяют сертификат TLS сервера по настроенным сертификатам Центра сертификации (ЦС); VERIFY_IDENTITY- Нравится VERIFY_CA, но дополнительно убедитесь, что сертификат сервера соответствует хосту, к которому предпринимается попытка подключения.

Это свойство заменило устаревшие устаревшие свойства useSSL, requireSSLи verifyServerCertificate, которые все еще принимаются, но переводятся в значение, sslModeесли sslModeявно не установлено: useSSL=falseпереводится в sslMode=DISABLED; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"}переводится на sslMode=PREFERRED; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"}переводится на sslMode=REQUIRED; {"useSSL=true" AND "verifyServerCertificate=true"}переводится на sslMode=VERIFY_CA. Не существует эквивалентных устаревших настроек для sslMode=VERIFY_IDENTITY. Обратите внимание, что для ВСЕХ версий сервера значением по умолчанию sslModeявляется значение PREFERRED, и оно эквивалентно устаревшим настройкам , которые в некоторых ситуациях отличаются от настроек по умолчанию для Connector / J 8.0.12 и более ранних версий. Приложения, которые продолжают использовать устаревшие свойства и используют старые настройки по умолчанию, должны быть проверены.useSSL=true , requireSSL=falseиverifyServerCertificate=false

Унаследованные свойства игнорируются, если sslModeустановлено явно. Если ни один из sslModeили useSSLне установлен явно, применяется настройка по умолчанию sslMode=PREFERRED.

По умолчанию :PREFERRED

Начиная с версии : 8.0.13

Так что, в моем случае, настройка sslMode=DISABLED- это все, что мне нужно для решения проблемы. Это было на тестовой машине. Но для производства безопасным решением будет правильная настройка клиента Java и сервера MySQL для использования SSL.


Обратите внимание, что при отключении SSL вам также может потребоваться установить allowPublicKeyRetrieval=true. (Опять же, не мудрое решение с точки зрения безопасности). Дополнительная информация представлена ​​в MySQL ConnectionString Options :

AllowPublicKeyRetrieval

Если учетная запись пользователя использует sha256_passwordаутентификацию, пароль должен быть защищен во время передачи; TLS является предпочтительным механизмом для этого, но если он недоступен, то будет использоваться шифрование с открытым ключом RSA. Чтобы указать открытый ключ RSA сервера, используйте параметр ServerRSAPublicKeyFileстроки подключения или установите, AllowPublicKeyRetrieval=Trueчтобы разрешить клиенту автоматически запрашивать открытый ключ с сервера. Обратите внимание, что это AllowPublicKeyRetrieval=Trueможет позволить злонамеренному прокси-серверу выполнить атаку MITM, чтобы получить пароль в виде открытого текста, поэтому по умолчанию он имеет значение False и должен быть явно включен.

М.С. Дусти
источник
Соответствующая тема от Payara Server GitHub .
MS Dousti
3

Моя же проблема решается с помощью следующих шагов:

  1. Перейти к my.cnf

    vi /etc/mysql/my.cnf
  2. Изменить свой bind-адрес

    "bind-address = 0.0.0.0"
  3. Перезапустите MySQL

    sudo /etc/init.d/mysql restart
Haimei
источник
2

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

xrcwrn
источник
2

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

Дарио Кастро
источник
2

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

MrPencil
источник
2

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

Maheshkumar.V
источник
1

Просто пережил это.

Должен заставить это работать: (это может быть помещено в статический блок intializer)

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

С уважением.

mel3kings
источник
2
Статический блок не нужен с 2007 года, и вы можете указать параметры входа в систему в любом случае.
Маркиз Лорн
1

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

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

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

$ telnet localhost 3306
Trying ::1...

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

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

Хаоже Се
источник
Это на самом деле проблема с вашим файлом / etc / hosts, а не с Mysql
OneCricketeer
@ cricket_007 По умолчанию localhost разрешается в :: 1 вместо 127.0.0.1.
Хаоже Се
1
Конечно, только если ipv6 включен и зависит от файла hosts
OneCricketeer
1
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);

если MySQL версии 8 или выше, пользователь обновил соединитель

Ravinath
источник
это правильный ответ, просто добавьте useSSL = false в строку подключения при использовании драйвера MySQL 8 или выше.
Моханд
1

Для удаленного звонка на 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 = 0.0.0.0
    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'
Yugerten
источник
0

У меня была такая же проблема, и вот как она была исправлена:

  1. Мой .jsp вызывал атрибуты, которые я еще не определил в сервлете.
  2. У меня было два имени столбца, через которые я передавал объект, ResultSet (getString("columnName"))который не совпадал с именами столбцов в моей базе данных.

Я не совсем уверен, какой из них решил проблему, но это сработало. Также убедитесь, что вы создаете новый Statementи ResultSetдля каждого запроса таблицы.

user3427633
источник
1
(1), конечно, не вызывает этой проблемы.
Маркиз Лорн
0

Это может быть простая проблема с банкой. возможно, вы используете старую mysql-connector-java-XXX-bin.jarверсию, которая не поддерживается вашей текущей версией mysql. Я использовал, mysql-connector-java-5.1.18-bin.jarкак я использую, mysql 5.5и эта проблема решена для меня.

Анкит джайн
источник
1
Да, может быть шанс несоответствия банок.
Киран Нунна
Все эти версии драйверов должны быть совместимы.
Маркиз Лорн
0

Возможно, вы не запустили свой Mysql и Apache Server. После того, как я запустил сервер Apache и Mysql из панели управления XAMPP, соединение было успешно установлено.

Удачи!

Шивам Гупта
источник
0

Для меня решено сделать 2 вещи: 1. создать нового пользователя, кроме root, с паролем, используя следующие коннады:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

2. прокомментируйте строку IP-адреса в mysqld.conf

затем подключитесь с новым именем пользователя и паролем. он должен работать.

Абдул Халид
источник
Вам нужно будет повторить это для всех удаленных пользователей или добавить подстановочный знак вместо Localhost
OneCricketeer
0

Он пытался подключиться к более старой версии MySQL ('version', '5.1.73'); когда вы используете более новую версию драйвера, вы получаете сообщение об ошибке «com.mysql.cj.jdbc.Driver» или даже то, что вам не нужно указывать, какой из них вы используете:

Загрузка класса com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver '. Драйвер автоматически регистрируется через SPI, и ручная загрузка класса драйвера обычно не требуется.

Я изменил объявление, чтобы использовать версию mysql-connector-java 5.1.38, и в коде я сохранил com.mysql.jdbc.Driver .

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

Все началось, когда я увидел ответ Ankit Jain

estellezg
источник
0

Мой брандмауэр блокировал пост 3307, который слушал мой MySQL. Поэтому я изменил порт с 3307 на 3306. Затем я могу успешно подключиться к базе данных.

Михал Шипек
источник
0

В моем MacBook я решил эту ошибку только при переустановке новой версии eclipse EE и удалении локальных серверов, таких как xamp mysql или mamp, но использую только один из них ...

м Пироли
источник
0

В моем случае я должен был установить ssh-туннель к удаленной базе данных, и все настройки были правильными, и тестирование соединения с PhpStorm также прошло успешно. А также схема была загружена, но не данные. Вместо этого я получил:

[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.

Ни одно из предложенных выше предложений не сработало. По какой-то причине я пытался решить проблему, просто перезапустив PhpStorm и вуаля, это сработало!

Tech Nomad
источник
0

Я получал несколько ошибок, таких как:

  • CommunicationsException: Communications link failure
  • java.lang.NullPointerException: Attempt to invoke interface method 'java.sql.Statement java.sql.Connection.createStatement()' on a null object reference at,

Я должен был добавить:

  • В AndroidManifest.xml включайте <uses-permission android:name="android.permission.INTERNET"/>сразу после открытия тег манифеста.

  • Добавьте драйвер JDBC в ваши зависимости Gradle (или Maven).

Даниэль Сегура
источник