잠금을 시도할 때 교착 상태가 발견되지 않도록 합니다. 중복 키 업데이트 시 MariaDB(MySQL) INSERT에서 트랜잭션을 다시 시작해 보십시오.
저는 줄이 많은 간단한 테이블을 가지고 있습니다.외부 키가 없습니다.여러 열에 하나의 고유한 키가 있습니다.
다음은 삽입 문의 예입니다.
INSERT INTO das_args (a,b,c,d) VALUES (1,2,3,4) ON DUPLICATE KEY UPDATE VALUES(1,2,3,4)
고유 키는 (a,b,c)입니다.
오류:
(1213, 'Deadlock found when trying to get lock; try restarting transaction')
나는 mysql '잠금을 시도할 때 Deadlock found: 트랜잭션 다시 시작하기'를 피하는 방법을 읽었는데, 이는 다른 사용 사례에서 트리거되는 동일한 오류 메시지에 대한 훌륭한 토론입니다.
자동 커밋은 참입니다.이것이 유일한 진술입니다.BEGIN 또는 COMMIT가 없습니다.
제가 이걸 리팩터링 할 수 있는 방법이 없어요.동일한 고유 키를 동시에 업데이트하는 것으로 보이는 클라이언트가 두 개뿐입니다.내 코드가 문을 다시 실행하면 성공하지만 교착 상태 오류를 제거하고 싶습니다.
먼저, 구문은 다음과 같습니다.
INSERT INTO das_args (a,b,c,d)
VALUES (1,2,3,4)
ON DUPLICATE KEY UPDATE d = VALUES(d);
교착 상태에 대해서는 -- 트랜잭션에 하나 이상의 문이 있는 것 같습니다.어디 보자꾸나BEGIN
을 통하여COMMIT
.
의 가치는 무엇입니까?autocommit
?
언급URL : https://stackoverflow.com/questions/59142436/avoid-deadlock-found-when-trying-to-get-lock-try-restarting-transaction-on-mari
'programing' 카테고리의 다른 글
'computer-instance'는 동일한 이미지에 대해 여러 인스턴스를 생성합니다. (0) | 2023.08.20 |
---|---|
복제되지 않은 DB에 쓰는 경우 MariaDB(10.5.8) Galera 클러스터 노드의 GTID가 동기화되지 않음 (0) | 2023.08.20 |
NSTime에서 변환시간, 분, 초, 밀리초 단위의 swift 간격 (0) | 2023.08.20 |
Python의 예외 처리기 비용 (0) | 2023.08.20 |
SQL Server 2008에서 트랜잭션 로그를 보는 방법 (0) | 2023.08.20 |