DBAtlas · 데이터베이스 운영 아틀라스

1213: Deadlock found when trying to get lock; try restarting transaction

MySQL

의미

InnoDB가 둘 이상의 트랜잭션이 서로의 락을 기다리는 데드락을 감지하고, 트랜잭션 중 하나를 롤백해 순환을 끊었다.

원인

서로 다른 순서로 획득한 행 락, 같은 행에 대한 교차 갱신, 인덱스 부재로 넓은 행 범위가 잠김(gap lock), 또는 외래 키 검사 중 충돌.

해결 방법

최근 데드락 상세를 확인한다: SHOW ENGINE INNODB STATUS(LATEST DETECTED DEADLOCK 섹션). 모든 트랜잭션에서 같은 순서로 행/테이블에 접근하고 트랜잭션을 짧게 유지한다. 적절한 인덱스를 추가해 잠기는 범위를 좁힌다. 롤백된 트랜잭션은 애플리케이션에서 잡아 재시도한다(retry 로직).

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목