处理 mysql error 1205

今天在公司修复一个小bug,一个数据在修改后没有实时的存储起来,直接改代码,修改后通过mysql语句存储起来,但是测试的时候,mysql老是存储不成功,明明看到sql语句已经执行但是通过连到数据库去看,数据还是没有更新 。然后通过看代码,原来mysql查询没成功,返回1205错误,网上一查 Lock wait; try大概原因是死锁了,上一个事务一直没有提交,导致一直在那等待 。
先看下mysql线程 show,由于是开发测试机,连接太多了,根本不好看到我的连接 。直接使用mysql语句查看
select id,user,host,db,Command,State,time from information_schema.processlist where db='我的数据库';
没有看到正在执行的慢查询,网上搜索说可以查.这张表,可以直接看到死锁的状态,但是,貌似.5以上才有,我们用的5.1,悲剧 。
后来发现凡是涉及到那张表的操作全返回1205,那肯定是死锁了 。仔细看上面的连接线程,有两个host不一样,且其一直是sleep状态,很有可能就是开始事务后,没有提交,一直sleep了 。而且那两个连接就是通过我本机连到的数据库,有可能我在中有些误操作,然后又不管了强制关闭了 。可以试试直接kill这些线程 。
【处理 mysql error 1205】直接kill 上面的线程,mysql语句执行成功了!!