Не удалось включить автокоммит - PullRequest
2 голосов
/ 21 января 2011

У меня есть транзакция, которая выполняется в течение многих часов на уровне Java, и когда Hibernate пытается сохранить сопоставленные данные, генерируется трассировка стека исключений, показанная ниже.

Примечание: я также попробовал конфигурации, указанные в ..

http://forums.mysql.com/read.php?39,52805,205216#msg-205216 и http://forums.mysql.com/read.php?39,52805,273371#msg-273371

++++++

ERROR org.hibernate.transaction.JDBCTransaction (JDBCTransaction.java:232) - Could not toggle autocommit 
java.sql.SQLException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error: 


** BEGIN NESTED EXCEPTION ** 

com.mysql.jdbc.CommunicationsException 
MESSAGE: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.io.EOFException 

STACKTRACE: 

java.io.EOFException 
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1903) 
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2349) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2860) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:2972) 
    at com.mysql.jdbc.Connection.commit(Connection.java:2147) 
    at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:301) 
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:200) 
    at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:170) 
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:146) 
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:394) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625) 

Ответы [ 3 ]

3 голосов
/ 15 декабря 2011

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

Однако DBCP не знает, когда соединения прекращаются сервером MySQL, и поэтому эти устаревшие соединения по-прежнему передаются приложению по требованию.Следовательно, вы получаете исключение.

Исправление заключается в добавлении следующих свойств в вашу конфигурацию dbcp:

  • validationQuery = ”SELECT 1 ″
  • testOnBorrow =” true”

Это говорит DBCP для проверки соединения с этим запросом.

0 голосов
/ 04 апреля 2013

У нас была очень похожая трассировка стека при работе при индексации данных с помощью Lucene из нашего приложения Spring. Проблема заключалась в настройке wait_timeout в my.cnf. Мы только что обновили нашу установку MySQL, и наш администратор забыл изменить wait_timeout со значения по умолчанию на 3600.

0 голосов
/ 16 ноября 2011

Скорее всего, соединение прервано базой данных. Укажите запрос проверки на DBCP, чтобы убедиться, что соединения в пуле все еще живы.

http://commons.apache.org/dbcp/configuration.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...