Иногда получение JDB C начало транзакции не удалось, затем восстанавливается автоматически - PullRequest
0 голосов
/ 27 февраля 2020

Мы используем несколько источников данных Spring для соединения нескольких баз данных. Мы получаем следующие ошибки только изредка, а затем через некоторое время все снова начинает работать автоматически

o.h.e.j.s.SqlExceptionHelper.logExceptions:129 - SQL Error: 0, SQLState: null
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.TransactionException: JDBC begin transaction failed:
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 84,250,518 milliseconds ago.  The last packet sent successfully to the server was 84,250,518 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

1 Ответ

0 голосов
/ 06 апреля 2020

Обнаружена проблема, из-за некоторой неактивности источник данных становится бездействующим и теряет соединение из пула.

Решением было добавить запрос проверки и установить значение true для testOnBorrow в файле свойств приложения Spring

validationQuery="select 1"
testOnBorrow=true

autoRecconect = true в этом случае не помогает

...