Не удается создать PoolableConnectionFactory

В чем проблема? Не удается подключиться к базе данных?

   org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (
            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.)

person ujava    schedule 05.03.2011    source источник
comment
Вместо этого опубликуйте полную трассировку стека. Без трассировки стека мы не можем понять, в чем основная причина этой ошибки.   -  person Buhake Sindi    schedule 05.03.2011
comment
В Linux мне пришлось запустить службу, набрав service mysqld start   -  person MacGyver    schedule 12.06.2015


Ответы (14)


Это фактическая причина проблемы:

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

У вас проблема со связью с базой данных. Убедитесь, что ваше приложение имеет сетевой доступ к вашей базе данных (и брандмауэр не блокирует порты к вашей базе данных).

person Buhake Sindi    schedule 05.03.2011
comment
Для потомков я сталкиваюсь с этой проблемой каждый месяц или около того, когда перезапускаю машину в среде разработки, а моя база данных не работает. Я надеюсь, что это поможет кому-то еще, когда они сделают ту же глупую ошибку. - person user2217751; 15.06.2013

У меня была такая же проблема с localhost в исходном URL. Я разрешил с помощью 127.0.0.1 вместо localhost.

person Shinigami    schedule 04.01.2013

Это проблема сети. Проверьте подключение к базе данных. Либо ваша ссылка для подключения к базе данных, имя пользователя и пароль неверны, либо ваш сервер базы данных остановлен.

person Raje    schedule 11.07.2012

Здесь это было вызвано антивирусом avast. Вы можете отключить брандмауэр avast и оставить активным только брандмауэр Windows.

person Mateus Viccari    schedule 08.12.2014

Я сталкиваюсь с той же проблемой, когда настраиваю сервер tomcat и mysql на виртуальной машине VirtualBox с помощью шеф-повара.

в этом случае я думаю, что истинная проблема заключается в том, что VirtualBox, похоже, назначает нелокальный адрес eth0, например

[vagrant@localhost webapps]$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:60:FC:47
      inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

затем функция автоматического обнаружения рецепта шеф-повара с использованием 10.0.2.15 в качестве адреса привязки сервера mysql.

поэтому укажите адрес привязки для параметров узла рецепта шеф-повара, чтобы решить проблему в моем случае. Я надеюсь, что эта информация поможет людям, использующим шеф-повара с vagrant.

{
  "name" : "db",
  "default_attributes" : {
   "mysql" : {
    "bind_address" : "localhost"
    ...
   }
person takehiro iyatomi    schedule 14.09.2013

Эта конкретная проблема может возникнуть и на локальном хосте. Мы не можем исключить, что это связано с проблемой сети или с подключением к Интернету. Эта проблема возникнет, даже если все свойства подключения к базе данных верны.

Я столкнулся с той же проблемой, когда использовал имя хоста. Вместо этого используйте IP-адрес. Это разрешится.

person Sumanth Varada    schedule 21.01.2019

Это происходит потому, что брандмауэр блокирует соединение с базой данных.

Отключите брандмауэр и попробуйте снова запустить программу. У меня сработало... :D

person Rakesh Patil    schedule 25.03.2012
comment
Или я просто изменил порт с 3307 на 3306. - person Michal Šípek; 07.06.2018

Поменял версию драйвера в pom.xml и мне помогло

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.2</version>
</dependency>
person Николай Москалюк    schedule 02.10.2018

Перейдите к файлу my.ini по указанному ниже пути в Windows C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

и прокомментируйте строку ниже

#bind-address=127.0.0.1

Затем перезапустите сервер MySQL и подключитесь.

Тогда вы сможете подключиться к MySQL с другого IP-адреса/машины.

person Nagesh    schedule 13.12.2018

В моем случае решение состояло в том, чтобы удалить атрибут

validationQuery="select 1"

из тега ресурса (Derby DB).

person rob2universe    schedule 12.10.2018

Проблема может быть связана с тем, что слишком много пользователей одновременно обращаются к базе данных. Либо увеличьте количество пользователей, которые могут одновременно обращаться к базе данных, либо исключите существующих пользователей (или приложения). Используйте «Показать список процессов»; в хостовой БД проверять подключенных пользователей;

Я столкнулся с другой причиной: файл catalina.policy может запретить доступ к определенному IP/ПОРТу.

person Adel    schedule 29.04.2019
comment
Есть куча причин не связываться. - person Chris Catignani; 29.04.2019

пытаться

jdbc:sqlserver://hostname:port;databaseName=TEST

У меня это сработало после добавления двоеточия перед номером порта вместо запятой

person Mehul Kumbhani    schedule 26.06.2020

Если вы используете версию apache tomcat 8.0, вместо нее используйте tomcat 7.0. Я пробовал с localhost на 127.0.0.1 и отключал брандмауэр, но не работал, но использовал tomcat 7.0 и теперь работает

person 최수영    schedule 14.04.2015

У меня была аналогичная ошибка. Помогло изменение URL-адреса JDBC для использования 127.0.0.1 вместо localhost.

Также пытался изменить записи в файле catalina.policy, но это не помогло. Запись, которую я изменил, была для - java.net.SocketPermission

person Jay    schedule 19.04.2015