DBAtlas · データベース運用アトラス

1213: Deadlock found when trying to get lock; try restarting transaction(ロック取得時にデッドロックを検出)

MySQL

意味

InnoDB が、2 つ以上のトランザクションが互いのロックを待つデッドロックを検出し、いずれかのトランザクションをロールバックして循環を解消した。

原因

異なる順序で取得された行ロック、同じ行の交差更新、インデックスの欠如による広い行範囲のロック (ギャップロック)、または外部キーチェック中の競合。

対処方法

最新のデッドロック詳細を表示する: SHOW ENGINE INNODB STATUS (LATEST DETECTED DEADLOCK セクション)。すべてのトランザクションで同じ順序で行/テーブルにアクセスし、トランザクションを短く保つ。適切なインデックスを追加してロック範囲を狭める。ロールバックされたトランザクションをアプリケーションで捕捉して再試行する (再試行ロジック)。

DBAtlas で開く →

同じデータベースの他の項目