com.mysql.jdbc.exceptions.jdbc4.CommunicationException: Помилка зв'язку зв'язку


225

Я працюю над тим, щоб отримати свою базу даних для розмови зі своїми програмами 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

Відповіді:


251

Отже, у вас є

com.mysql.jdbc.exceptions.jdbc4.CommunicationException: Не вдалося зв’язати зв’язок
java.net.ConnectException: Підключення відмовлено

Я цитую цю відповідь, яка також містить покроковий посібник MySQL + JDBC:

Якщо ви отримаєте певний SQLException: Connection refusedабо Connection timed outMySQL CommunicationsException: Communications link failure, це означає, що БД взагалі недоступна. Це може бути однією або декількома з таких причин:

  1. IP-адреса або ім'я хоста в URL-адресі JDBC неправильно.
  2. Місцеве DNS-сервер не розпізнає ім'я хосту в URL-адресі JDBC.
  3. У URL-адресі JDBC номер порту відсутній або неправильний.
  4. Сервер БД не працює.
  5. Сервер DB не приймає TCP / IP-з'єднання.
  6. Сервер БД закінчився.
  7. Щось між Java та БД блокує з'єднання, наприклад, брандмауер чи проксі.

Щоб вирішити те чи інше, дотримуйтесь наступних порад:

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

Дивитися також:


4
MAMP / MAMP Pro за замовчуванням встановлює MAMP_skip-networking_MAMP. Ви повинні відключити цей рядок у своєму my.cfn
Jurik

6
Не в цьому випадку, але вихід з ладу зв'язку також відбувається, коли ви використовуєте пул з'єднань, і з'єднання закриваються через тривалу бездіяльність. Тільки в цьому випадку він говорить: "Останній пакет був отриманий кілька" X "секунд тому"
nikel

@nikel Чи не повинні тримати нитки в пулі з'єднань активованими, запускаючи запит перевірки "select 1"? Чому вони закриваються тривалою бездіяльністю, коли ми встановили, що евиктор запускається через більш короткі проміжки часу, ніж таймаут сервера mysql?
Фархад

Так, це запит на перевірку виправить це. Моя думка була про випадок, коли він не встановлений, а з'єднання в пулі вимкнуті через бездіяльність
nikel

Іноді порт відсутній у рядку з'єднання, і драйвер спробує підключитися до порту за умовчанням 3306 mysql & не вдасться, якщо mysql не працює на цьому порту. Це було моїм питанням, тому я хотів би зазначити, якщо хтось інший знайде це корисним.
Абдул Маннан

10

Я виловлю це виняток, коли Java виходить з купи. Якщо я спробую ввести в оперативну пам’ять багато елементів даних - спочатку я вловлюю " Збій посилання зв'язку " і далі " OutOfMemoryError" ".

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


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

Останнє оновлення 4/5/18: На даний момент я використовую MySQL Workbench 6.3. Я прийшов сюди, щоб перевірити рішення, але я знайшов його самостійно, просто ваш сервер MySQL не працює або його зупиняють. Я перезапустив свій сервер, він працював як шарм.
Абхішек Екаант

7
Це "найкраще рішення", чому? Яку проблему вона вирішує, і як?
Маркіз Лорн

це рішення не може генерувати кадри даних
Алан,

8

Цей com.mysql.jdbc.exceptions.jdbc4.CommunicationsExceptionвиняток виникає, якщо підключення до бази даних тривалий час не працює.

Це з'єднання в режимі очікування повертається істинно, connection.isClosed();але якщо ми спробуємо виконати оператор, то він випустить це виняток, тому я запропоную перейти до об'єднання баз даних.


2
Це також виникає з інших причин, таких як "відмовлено в з'єднанні".
Маркіз Лорн

6

У мене одна і та ж проблема годинами. Я використовую сервер MAMP

Замість використання localhost: [Порт Apache], використовуйте порт MySQL.

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

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

Connection conn = DriverManager.getConnection(url, dbUsername, dbPassword);

якщо у вас є болото перед встановленням Mysql, то спробуйте цей метод
DAVIS BENNY 15MIS0426

5

Я, можливо, тут гавкає неправильне дерево, але, як видається, ваш виняток вказує, що ваш сервер MySQL недоступний.

Виняток у потоці "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Помилка зв'язку зв'язку. Останній пакет, який успішно відправлений на сервер, був 0 мілісекунд тому. Драйвер не отримав жодного пакету від сервера. у ...

Що станеться, якщо спробувати (з терміналу)

mysql -u username -p

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

Можливо, вам доведеться запустити MySQL з Налаштування, якщо ні. Ви також можете встановити його для запуску при запуску.


1
Я використовую MAMP для запуску свого MySQL-сервера. Це буде проблемою?
Josh K

Коли я підключаюсь (через Sequal Pro) до свого, localhostя використовую правильне ім’я користувача / пароль, і він працює чудово.
Josh K

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 (так, вона стара, просто для імітації версії продукту). Тож я зустрів ту саму помилку.

Оскільки причина знайдена, рішення також знайдено. Відповідайте версії!


4
Навряд чи. Усі ці версії драйверів повинні бути сумісними назад.
Маркіз Лорн

1
Здається, ця проблема виправлена ​​в нових роз'ємах mysql, див. Stackoverflow.com/questions/14559794/…
Nishi

Той самий випадок і для мене. Версія драйвера призначена для MySQL 5, тоді як версія сервера - 8. Отже, я оновив версію банку і проблему вирішено.
edenPan

4

Я отримав таку ж помилку, оскільки намагався запустити свою програму, не запускаючи сервер mysql.

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


4

Раніші відповіді відповідні. Але я також хотів би вказати на більш загальне питання.

Я зіткнувся з подібним питанням, і причиною цього стало обмеження мережі в моїй компанії.

Це ж з'єднання набуло успіху, коли я був у будь-якій іншій мережі.


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 .

Потрібно ввімкнути банку драйверів під час компіляції та виконання у вашому класі.

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?
Джош К

@Josh це працює, вам дійсно просто потрібно правильно налаштувати свій класний шлях. (Або скопіюйте банку в каталог% 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 сервера щодо налаштованих сертифікатів сертифікаційного органу (CA); 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, і це еквівалентно успадкованими налаштуваннями useSSL=true, requireSSL=falseіverifyServerCertificate=false, які відрізняються від стандартних налаштувань для Connector / J 8.0.12 та більш ранніх випадках у деяких ситуаціях. Програми, які продовжують використовувати застарілі властивості та покладаються на їхні старі налаштування за замовчуванням, слід переглянути.

Спадкові властивості ігноруються, якщо sslModeвстановлено чітко. Якщо жодне з sslModeабо useSSLне встановлено явно, застосовується налаштування за замовчуванням sslMode=PREFERRED.

За замовчуванням :PREFERRED

З моменту версії : 8.0.13

Тож у моєму випадку налаштування sslMode=DISABLEDбуло все, що мені було потрібно для вирішення проблеми. Це було на тестовій машині. Але для виробництва безпечним рішенням було б правильно налаштувати клієнт Java та сервер MySQL для використання SSL.


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

ДозволитиPublicKeyRetrieval

Якщо обліковий запис користувача використовує sha256_passwordавтентифікацію, пароль повинен бути захищений під час передачі; TLS є кращим механізмом цього, але якщо він недоступний, тоді буде використано шифрування відкритого ключа RSA. Щоб вказати відкритий ключ сервера RSA, використовуйте параметр ServerRSAPublicKeyFileрядка з'єднання або встановіть, AllowPublicKeyRetrieval=Trueщоб дозволити клієнту автоматично запитувати відкритий ключ від сервера. Зверніть увагу, що AllowPublicKeyRetrieval=Trueзловмисний проксі може дозволити виконувати атаку MITM, щоб отримати пароль простого тексту, тому він за замовчуванням є Неправильним і повинен бути явно включений.


Відповідна нитка від Payara Server GitHub .
МС Дусті

3

Моя ж проблема вирішується наступними кроками:

  1. Йти до my.cnf

    vi /etc/mysql/my.cnf
  2. Змініть свою прив'язку-адресу

    "bind-address = 0.0.0.0"
  3. Перезавантажте MySQL

    sudo /etc/init.d/mysql restart

2

Якщо ви використовуєте WAMPабо XAMPсервер для установки бази даних mysql. Тоді вам доведеться явно запустити mysql sever інші мудрі, що буде показано com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureпід час з'єднання з базою даних


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) назад він знову працював нормально.


2

Якщо ви змінили свій порт, ви отримаєте подібну помилку "com.mysql.jdbc.exceptions.jdbc4.CommunicationException: Помилка зв'язку зв'язку" Перевірте номер свого порту


1

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

Потрібно змусити його працювати за допомогою: (це може бути розміщено в стаціонарному блоці інтилайзера)

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
Статичний блок не потрібен з 2007 року, і ви можете вказувати параметри входу в будь-якому випадку.
Маркіз Лорн

1

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

Localhost буде вирішено зробити ::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.
Haozhe Xie

1
Звичайно, лише якщо ipv6 увімкнено і залежно від файлу хостів
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 або вище, оновлений користувачем


це правильна відповідь, просто додайте useSSL = false в рядок з'єднання при використанні драйвера MySQL 8 або вище.
Моханд

1

Для віддаленого дзвінка до Mysql

  1. Додайте віддаленого користувача до Mysql з for exampleple 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'

0

У мене була така ж проблема, і ось, як це було виправлено:

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

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


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. Після запуску сервера Apache та Mysql з панелі керування XAMPP, з'єднання було успішно встановлено.

Удачі!


0

Що для мене вирішено - це 2 речі: 1. створити нового користувача, крім root, за допомогою пароля, використовуючи наступні connads:

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

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

потім підключіться до нового імені користувача та пароля. це має працювати.


Вам потрібно буде повторити це для всіх віддалених користувачів або додати шаблону замість
Localhost

0

Він намагався підключитися до старішої версії MySQL ('версія', '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, а завантаження водійського класу вручну, як правило, не потрібне.

Я змінив декларацію, щоб використовувати 5.1.38 версію mysql-connector-java, і в коді я зберіг com.mysql.jdbc.Driver .

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

Все почалося , коли я побачив ANKIT JAIN в відповідь


0

Мій брандмауер блокував пост 3307, який слухав мій MySQL. Тому я змінив порт з 3307 на 3306. Тоді я можу успішно підключитися до бази даних.


0

У своєму MacBook я вирішував цю помилку лише під час перевстановлення нової версії Elipse 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 і вуаля він працював!


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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.