2013-07-09 3 views
8

내 코드가 엉망입니다. 어디에 문제가 있는지 잘 모르겠지만 트랜잭션이나 테이블 잠금을 사용하지 않고 교착 상태가 발생합니다. 이에 대한 모든 정보가 도움이 될 것입니다.트랜잭션없이 교착 상태를 어떻게 유지할 수 있습니까?

교착 상태를 찾았으며 트랜잭션을 사용하는 것이 유일한 방법 인 것 같습니다.

Error Number: 1213 
Deadlock found when trying to get lock; try restarting transaction 
UPDATE `x__cf_request` SET `contact_success` = 1, `se_engine_id` = 0, `is_fresh` = 1 WHERE `id` = '28488' 

편집 : 왜 downvotes입니까? 그것은 유효한 질문입니다. 불가능할 경우, 왜 다른 사람들이이 문제에 부딪 힐 때를 볼 수 있도록 말하십시오.

+0

그래서 당신이 downvoted지고있다 절름발이. 나는 비슷한 문제를 겪고 있으며 귀하의 질문은 가장 가까운 답변입니다. ... 당신이 이것을 해결했는지 알려주세요! –

답변

1

InnoDB에서 각 문장은 변환으로 실행됩니다. BEGIN 및 autocommit = 0은 다중 명령문 트랜잭션에 사용됩니다. 그렇지만 교착 상태는 여러 트랜잭션간에 발생합니다.

id 필드에 인덱스가 없거나 두 개 이상의 레코드가 같은 id 인 것 같습니다. 그렇지 않은 경우 색인 갭 잠금 기능을 사용하십시오. 추가 진단을하려면 출력을 제공해야합니다 SHOW ENGINE InnoDB STATUS

관련 문제