我有两个程序。一个如下:
begin Tx;
select * from page where id=1 lock in share mode;
sleep(10);
update page.count = page.count+1 where id=1
commit;
另一个是:
update page.count = 100 where id=1;
我运行它们,第二个程序返回err:
Error 1213: Deadlock found when trying to get lock; try restarting transaction 。
谁能告诉我为什么会僵局?
1条答案
按热度按时间noj0wjuj1#
由于两个程序试图同时访问表中的同一行(id=1),因此发生了死锁。第一个程序在共享模式下锁定该行,而第二个程序试图更新同一行。由于它们正在访问同一行,因此两个程序都无法完成,从而导致死锁。