同事 代码出了问题
Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
try{
//创建订单
agOrderRelationSwjList.forEach(e->{
//如果有记录 则删除原来的
//LambdaQueryWrapper<AgSwjMfiveOrder> queryWrapper = new LambdaQueryWrapper();
//queryWrapper.eq( AgSwjMfiveOrder::getMfiveOrder, order.getOrderCode() ).eq( AgSwjMfiveOrder::getSchemeId,e.getSchemeCode() );
//agSwjMfiveOrderService.remove( queryWrapper);
operationFactory.getOperationService(SwjConstants.SWJ_L).createOrder(order.getOrderCode(),e.getSchemeCode());
});
} catch (Exception e){
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
throw new ServiceException("异常!");
}
上面故障代码里面 执行了删除,为什么导致锁表呢?事务没有提交?事务是自动提交的呀。。。 回头查查代码问题
先处理MYSQL
select * from information_schema.innodb_trx
里面的trx 是没有办法 kill掉的
可以
show engine innodb status
拿到数据 在里面搜对应的trx_id
会找到 可以在 show processlist 中的对应的线程ID,这样就可以 kill
本次故障的事务线程ID 就是194788882,可以看到 信息还是非常全面的