这个mysql死锁现象主要是添加、修改或删除的操作添加了事务(添加了@Transactional注解或者是配置文件进行了配置),然后出异常的时候catch捕获了,导致事务没有收到异常一直在等待着,没有结束,也不会触发回滚操作,所以导致表被锁。代码里面解决的办法是在catch那里把异常给抛出来,如:
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
throw new RuntimeException(e); 就是把异常给抛出来,让事务能触发回滚,释放表的锁资源。。或者直接throw e 也可以,如:
throw e
参考资料:https://www.cnblogs.com/menglong1108/p/11919273.html
但是如果很急需要马上解决的话,可以查询是哪个连接,然后杀掉(kill)它,这样也可以释放锁资源;
具体参考:https://blog.youkuaiyun.com/java__project/article/details/100137526