당신이 "자동 거래"에 의존하고있었습니다 경우장고 1.5 select_for_update는 깨지기 쉬운 디자인
이 select_for_update() 및 후속 쓰기 작업 사이 잠금 제공하는 Django documentation 상태로 간주 - 관련 코드를 atomic()로 묶어야합니다. Django 1.6.3부터 자동 커밋 모드에서 select_for_update()를 사용하여 쿼리를 실행하면 TransactionManagementError가 발생합니다.
왜 연약한가? 나는 이것이 적절한 거래 성을 가져올 것이라고 생각했을 것이다.
작성한 것은 의미가 있지만 문서가 작성된 방식에 따라 설계가 1.5에서 취약하다는 것을 나타냅니다. "당신이 *"자동 트랜잭션 "에 의존했다면 .... .... 내게 이것은 select_for_update를 1.5로 사용하여 업데이트를 위해 행을 고정시키는 것은 데이터베이스 자동 커밋을 사용하지 않아도 깨지기 쉬운 디자인이라고 말합니다 (그러나 장고의 ' autocommit 'application implementation) – Taras
예, 맞습니다. 자동 커밋을 사용할 때만 깨지기 쉽습니다. ** 실제로 ** 아무것도 잠그지 않기 때문에 그렇게 간주됩니다. 그것은 일반적인 의미에서 허약하지 않습니다. 그리고 notice -이 오류는이 문제를 다루고 있습니다. 왜냐하면 단지'select_for_update' 사용법 *에서 * autocommit을 사용했을 때만 활성화 되었기 때문에 모두 의미가 있습니다. – yuvi
Django 1.6+에만 적용되는 '극도로 취약한 디자인'주석이 있습니까? 문서가 쓰여진 방식은 Django <1.6의 경우 select_for_update가 약한 것으로 간주 됨 – Taras