遇到这个奇怪的问题,其中一个简单的查询由于死锁而失败 这是查询
UPDATE myprobelmatictable SET mycolumn = (mycolum-0) WHERE id = '59'
奇怪的问题是,只有当我的php服务器位于远程网络上较慢的服务器上时,此查询才会失败
在运行此查询之前,会发生以下情况
transaction starts
insert new row in table 5
select 1 row from myproblematictable
insert new row in table 6
update table 4
UPDATE myprobelmatictable SET mycolumn = (mycolum-0) WHERE id = '<id>'
update table 3
Commit Transaction
奇怪的是,每次都有同样的查询失败并出现以下错误
Error Number: 1213</p><p>Deadlock found when trying to get lock; try restarting transaction
innodb status命令似乎没有提到myproblematictable
任何线索?
答案 0 :(得分:0)
这可能是另一个查询以不同顺序更新表的结果。我会尝试查看是否有更新表的预定顺序,如果是,则重写更新的顺序。
如果没有,我建议尝试找出有问题的查询,并查看他们更新表格的顺序。你使用什么类型的表引擎?请记住,MyISAM会锁定整个表格。