Java MySql PoolableConnectionFactory & - PullRequest
0 голосов
/ 26 июня 2019

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

Теперь приобретен новый компьютер и установлен сервер Mysql на нем, и я пытаюсь запустить тот же код, который отлично работает на других машинах. Но получаю ошибку фабрики пула соединений. вставить всю ошибку для вашей справки.

гарантировал, что max_connections превышает 1K и правильно установил соответствующие переменные. Но все еще не может подключиться к БД. Использовал последний разъем MySql, однако все еще сталкивается с проблемой.

Может подключиться к Sql из терминала и из рабочей среды, однако проблема возникает только при попытке подключения к MySQL из eclipse с использованием Java.

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

Может ли кто-нибудь помочь мне с решением этой проблемы? какие переменные должны быть изменены.

java.sql.SQLException: Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)
    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2291)
    at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2038)
    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533)
    at com.Common.Handles.Td_Mmm_Data.getConnection(Td_Mmm_Data.java:71)
    at com.TD.TableOperations.asdf.asdfghj(TBLO_ORDERS.java:141)
    at poe.P4_DBDataAnalyzers.Engines.asdfghjk.getAllCsRecos(UpdateAllcs.java:230)
    at poe.P4_DBDataAnalyzers.Engines.asdfghjk.UpdateCsRecos(UpdateAllcs.java:52)
    at Alpha.EnginesManager.asdfghjk(EnginesManager.java:132)
    at Alpha.PreOpenEngines.main(PreOpenEngines.java:19)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.Util.getInstance(Util.java:387)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2165)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2090)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
    at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:39)
    at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:256)
    at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2301)
    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2287)
    ... 8 more
Caused by: java.lang.NullPointerException
    at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005)
    at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1916)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1845)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2106)
    ... 22 more
Exception in thread "main" java.lang.NullPointerException
    at com.Common.Handles.Td_Mmm_Data.closeConnection(Td_Mmm_Data.java:96)
    at com.TD.TableOperations.qwerqwer.GetAllEntriesAsList(TBLO_ORDERS.java:150)
    at poe.P4_DBDataAnalyzers.Engines.qwerqwerqwerweqr.getAllCsRecos(UpdateAllcsRecosManager.java:230)
    at poe.P4_DBDataAnalyzers.Engines.qwerqewrqewwqerqwerqwer.Updatecs(UpdateAllCs.java:52)
    at Alpha.EnginesManager.qwerweqqwerqwer(EnginesManager.java:132)
    at Alpha.PreOpenEngines.main(PreOpenEngines.java:19)

1 Ответ

0 голосов
/ 26 июня 2019

Проработал построчно и все проверил. Решил проблему наконец-то.

  1. Несколько проектов были добавлены в проект. Были ссылки на старый MySql-коннектор.
  2. Некоторые изменения в MySql 8.0 и выше, для которых требовался флаг "& allowPublicKeyRetrieval = true", что вызывало проблемы с подключением.
  3. Кроме того, необходимо изменить Max_Connections в переменных mysql. Необходимо настроить параметры времени ожидания подключения. Спасибо всем за ваш вклад.
...