事务期间数据库连接丢失

时间:2017-06-22 07:05:00

标签: java mysql transactions innodb

我有一个更新多行的JDBC事务。在事务中间数据库连接丢失。然后,由于数据库连接丢失,事务无法回滚或提交。

以下是DB / tx详细信息。

  • DB:MYSQL
  • 存储引擎:Inno DB
  • 事务隔离:可重复读取

当发生这种情况时,事务处理的锁仍然存在于DB中。

以下是" SHOW ENGINE INNODB STATUS \ G的输出;"命令。

--- TRANSACTION 69476,ACTIVE 5395秒 96个锁定结构,堆大小24784,301行锁定,撤消日志条目301

  1. 有没有办法可以手动删除锁?
  2. 我们可以更改指定的最长交易时间或锁定时间吗?
  3. 处理这种情况的最佳方法是什么
  4. 编辑: 以下是代码片段

     Ebean.beginTransaction(TxIsolation.REPEATABLE_READ);
    
        boolean foundError = false;
    
        for (Object object : objectList) {
                if (!saveObject(object)) {
                    foundError = true;
                    break;
                }
        }
    
        if (foundError) {
            Ebean.endTransaction();
        } else {
            Ebean.commitTransaction();
        }
    
      public boolean saveObject(Object object)  {
            try {
                Ebean.save(object);
            } catch (Exception e) {
                return false;
            }
    
            return true;
        }
    

0 个答案:

没有答案