1213: Deadlock found when trying to get lock; try restarting transaction(尝试获取锁时发现死锁;请尝试重新开始事务)
MySQL含义
InnoDB 检测到两个或多个事务互相等待对方锁的死锁,并通过回滚其中一个事务打破了循环。
原因
以不同顺序获取行锁、交叉更新相同的行、缺少索引导致锁定大范围的行(gap lock),或外键检查期间的冲突。
解决方法
查看最近的死锁详情:SHOW ENGINE INNODB STATUS(LATEST DETECTED DEADLOCK 部分)。在所有事务中以相同顺序访问行/表,并保持事务简短。通过添加合适的索引缩小锁定范围。在应用中捕获被回滚的事务并重试(重试逻辑)。