2010-10-12 66 views
1

在我的應用程序中使用Jboss5.0和mysql。並且會有很多並發動作,並且DB包含相當多的記錄。 這個錯誤是經常來的..每隔一段時間。com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:autocommit = true時無法調用回滾

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) 

任何人都可以幫忙嗎?

在此先感謝

+1

http://forums.sun.com/thread.jspa?threadID=5370911 – 2010-10-12 05:50:19

+0

謝謝。如果我將auto commit設置爲false,是否會影響任何非事務性更新。 – Tamizh 2010-10-12 06:37:49

回答

5

要麼你試圖調用回滾時,自動提交開啓,或者你正在使用的MyISAM表型在你的數據庫不支持事務(並有能力回滾)。

通過堆棧跟蹤判斷,到數據庫的事務失敗,並試圖創建SQLException並回滾事務,此異常正在發生。除非有例外情況(例如代碼中的例外情況正在被解僱),那麼我可能會猜測這是由於MyISAM表引起的。

+0

即時通訊使用innodb並支持交易。即時通訊同時具有事務性和非事務性查詢。 – Tamizh 2010-10-12 07:01:41

+1

@Tamizh,你是否在你的代碼中調用rollback(),如果是這樣,你是否嘗試過在禁用之前禁用自動提交? – Cyntech 2010-10-12 07:09:57

+0

是的,每當我使用事務我第一次設置自動提交虛假。 現在我發現它在jboss日誌文件中作爲WARN來到而不是ERROR。所以實際上這是一個警告,當連接丟失或長時間閃爍我猜 – Tamizh 2010-10-12 07:18:46