에서 교착 상태를 피하기 위해 나는이 다음 쿼리 (모든 테이블이 InnoDB에있는) 내가 스레드를 실행할 때 오른쪽 분명하기 때문에 내부 선택의, 교착 상태가 발생 방법 MySQL의
INSERT INTO busy_machines(machine)
SELECT machine FROM all_machines
WHERE machine NOT IN (SELECT machine FROM busy_machines)
and machine_name!='Main'
LIMIT 1
?
내가 오류는 다음과 같습니다
(1213, 'Deadlock found when trying to get lock; try restarting transaction')
가 어떻게 교착 상태를 피할 수있다? 쿼리가 작동하도록 변경하는 방법이 있습니까? 아니면 다른 것을해야합니까?
물론이 오류는 여러 번 실행하고 여러 스레드에서 실행 한 후에 만 발생합니다.
당신은 교착 상태 또는 잠금 경합을 경험하고 있습니까? – Quassnoi
@Quassnoi : 질문에 정보를 추가했습니다. (1213, '잠금을 시도 할 때 교착 상태가 발견되어 트랜잭션을 다시 시작하십시오') – olamundo
'show innodb status'는 마지막 교착 상태의 원인을 간략하게 설명합니다. – jonny