com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:autocommit = true时无法调用回滚

Tam*_*izh 1 java mysql jboss jdbc

我在我的应用程序中使用Jboss5.0和mysql.并且会有很多并发操作,并且DB包含相当多的记录.这个错误经常发生..时不时.

 com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:
 Can't call rollback when
 autocommit=true    at
 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:888)
    at
 com.mysql.jdbc.Connection.rollback(Connection.java:5192)
    at
 org.jboss.resource.adapter.jdbc.local.LocalManagedConnection.rollback(LocalManagedConnection.java:97)
    at
 org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.tidyup(TxConnectionManager.java:783)
    at
 org.jboss.resource.connectionmanager.BaseConnectionManager2.returnManagedConnection(BaseConnectionManager2.java:453)
    at
 org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.connectionClosed(TxConnectionManager.java:734)
    at
 org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.closeHandle(BaseWrapperManagedConnection.java:362)
    at
 org.jboss.resource.adapter.jdbc.WrappedConnection.close(WrappedConnection.java:155)
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

提前致谢

Cyn*_*ech 5

要么在打开自动提交时尝试调用回滚,要么在数据库中使用不支持事务的MyISAM类型表(以及回滚功能).

根据堆栈跟踪判断,数据库的事务失败,并且在尝试创建SQLException并回滚事务时,会发生此异常.除非有更多的异常(比如你的代码中的异常被触发的地方的指示),那么我会猜测它是由MyISAM表引起的.