码迷,mamicode.com
首页 > 数据库 > 详细

mysql中,执行delete语句时出现Lock wait timeout exceeded问题

时间:2015-01-27 20:07:13      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

当我插入一条记录时,在调用save方法的时候出现了异常(记录重复了),导致了后面的commit语句不能执行了。这时我在数据库中删除重复记录时发现该表已经被锁上了。即出现技术分享错误。但过了一会再次执行delete,就能成功删除记录了。

原因分析:

由于commit语句没有执行到,即事务没有提交成功,表还是被锁着的。只能等锁超时了,才能再次执行delete等操作。

解决办法:

1.遇到问题后可以kill掉对应的线程再次执行delete等操作。

2.为避免问题出现,可以开启mysql中的autocommit功能,将其值set为1。但这样的话会影响性能,因为执行1000条sql语句则要commit1000次。关闭的话,通过程序控制,1000条sql语句可以只commit一次。

3.不去改autocommit的话,也可以将commit放在finally语句块中。保证一定执行commit方法。

 

mysql中,执行delete语句时出现Lock wait timeout exceeded问题

标签:

原文地址:http://www.cnblogs.com/SunseCode/p/4253645.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!