代码之家  ›  专栏  ›  技术社区  ›  Tamizh

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

  •  1
  • Tamizh  · 技术社区  · 14 年前

    我在我的应用程序中使用jboss5.0和mysql。并且会有大量的并发操作,并且数据库包含相当多的记录。 此错误频繁出现。偶尔。

     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 回复  |  直到 14 年前
        1
  •  5
  •   Cyntech    14 年前

    或者您试图在启用自动提交时调用rollback,或者您正在数据库中使用不支持事务的myisam类型表(以及回滚功能)。

    根据stacktrace判断,到数据库的事务失败,在试图创建一个sqlException并回滚事务时,发生了此异常。除非有更多的例外情况(比如说在哪里 你的 代码异常被解雇),然后我冒险猜测这是由于myisam表。