DBAtlas · 数据库运维图谱

1213: Deadlock found when trying to get lock; try restarting transaction(尝试获取锁时发现死锁;请尝试重新开始事务)

MySQL

含义

InnoDB 检测到两个或多个事务互相等待对方锁的死锁,并通过回滚其中一个事务打破了循环。

原因

以不同顺序获取行锁、交叉更新相同的行、缺少索引导致锁定大范围的行(gap lock),或外键检查期间的冲突。

解决方法

查看最近的死锁详情:SHOW ENGINE INNODB STATUS(LATEST DETECTED DEADLOCK 部分)。在所有事务中以相同顺序访问行/表,并保持事务简短。通过添加合适的索引缩小锁定范围。在应用中捕获被回滚的事务并重试(重试逻辑)。

在 DBAtlas 中打开 →

同一数据库的其他条目