我在我的应用程序中使用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)
任何人都可以帮忙吗?
提前致谢
答案 0 :(得分:5)
要么在打开自动提交时尝试调用回滚,要么在数据库中使用不支持事务的MyISAM类型表(以及回滚功能)。
根据堆栈跟踪判断,数据库的事务失败,并且在尝试创建SQLException并回滚事务时,会发生此异常。除非有更多的异常(比如指示你的代码中的异常被触发的地方),否则我会猜测它是由MyISAM表引起的。