我一直在得到一个Deadlock found when trying to get lock; try restarting transaction
我的 InnoDB 表上出现错误。这是查询:
UPDATE views
SET visit_cnt = visit_cnt + 1
WHERE visit_day = DATE(NOW())
AND article_id = '4838'
此查询还通过 ON UPDATE 触发器触发此操作:
UPDATE articles
SET views = views + 1
WHERE id = NEW.article.id
以下是我尝试修复它的方法:
$attempts_left = 5;
do
{
mysql_query ($query);
// if we found a deadlock, we will try this query 4 more times
if (mysql_errno () == 1213) { // 1213 - deadlock error
$deadlocked = true;
$attempts_left --;
}
else{
$deadlocked = false;
}
}
while($deadlocked && $attempts_left > 0);
我的问题:这是处理僵局的唯一方法吗?我的意思是,这非常难看,而且僵局时不时会发生。有没有推荐的方法来解决死锁?
这是有关处理的很好的文档InnoDB 死锁 http://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html.
PS:我没有什么要添加的,所以只是给了你链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)