哈哈,没想到人生第一次遇到mysql的等待锁。幸会幸会
前端页面还没做好,现在所有接口都是测试直接测。访问的是我的本机,没有放在服务器跑。
测试同事以为我电脑运行的程序太多,导致测试的时候查询很慢,一直处于等待状态。
后来查看日志发现,报错如下:
Error 1205: Lock wait timeout exceeded; try restarting transaction
为什么会出现这个问题?
因为我需要对A表修改成功后再修改B表。如果其中一个失败,那么事务回滚。在事务回滚以后没有把整个函数return掉。
参考了网上各位大佬的做法。
首先:
show procelllist;
查看当前数据库对应的
备注:这两条数据是同一个数据库的数据。
由此可见,对这同一个数据库,一个为Query一个为Sleep
执行如下命令
kill 12278;
这个12278对应图片里的第一列id,也就是pid。kill掉这个sleep的就可以。