Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 事务期间数据库连接丢失_Java_Mysql_Transactions_Innodb - Fatal编程技术网

Java 事务期间数据库连接丢失

Java 事务期间数据库连接丢失,java,mysql,transactions,innodb,Java,Mysql,Transactions,Innodb,我有一个更新多行的JDBC事务。在事务处理过程中,数据库连接丢失。然后,由于数据库连接丢失,事务无法回滚或提交 以下是DB/tx的详细信息 数据库:MYSQL 存储引擎:InnoDB 事务隔离:可重复读取 当这种情况发生时,事务所使用的锁仍然存在于数据库中 以下是“SHOW ENGINE INNODB STATUS\G;”命令的输出 ---交易记录69476,有效5395秒 96个锁结构,堆大小24784,301个行锁,撤消日志条目301 有没有办法可以手动移除锁 我们可以更改指定的最大事务

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

以下是DB/tx的详细信息

  • 数据库:MYSQL
  • 存储引擎:InnoDB
  • 事务隔离:可重复读取
当这种情况发生时,事务所使用的锁仍然存在于数据库中

以下是“SHOW ENGINE INNODB STATUS\G;”命令的输出

---交易记录69476,有效5395秒 96个锁结构,堆大小24784,301个行锁,撤消日志条目301

  • 有没有办法可以手动移除锁
  • 我们可以更改指定的最大事务时间或锁定时间吗
  • 处理这种情况的最佳方法是什么
  • 编辑: 下面是代码片段






    您是如何用Java处理事务的?请在回答中包含代码。添加的代码片段我希望它能快速发现客户端已消失,并执行
    回滚
    ,从而释放锁。是吗?你是如何用Java处理事务的?请在回答中包含代码。添加的代码片段我希望它能快速发现客户端已消失,并执行
    回滚
    ,从而释放锁。是吗?
     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;
        }