응용 프로그램에서 몇 가지 반복 작업을 수행 (테스트)했는데 갑자기 이상한 오류가 발생합니다.
OperationalError: database is locked
서버를 다시 시작했지만 오류가 계속 발생합니다. 그것은 무엇에 관한 것일 수 있습니까?
해결 방법
장고 문서에서 :
SQLite는 경량을 의미합니다. database, and thus can't support a high level of concurrency. OperationalError: database is locked errors indicate that your application is experiencing more concurrency than sqlite can handle in default configuration. This error means that one thread or process has an exclusive lock on the database connection and another thread timed out waiting for 잠금이 해제됩니다.
Python SQLite 래퍼에는 기본값이 있습니다. timeout value that determines how long the second thread is allowed to wait on the lock before it times out and raises the OperationalError: database 잠금 오류입니다.
이 오류가 발생하면 다음을 수행 할 수 있습니다. 해결 방법 :
- 다른 데이터베이스 백엔드로 전환합니다. 특정 시점에서 SQLite는 실제 응용 프로그램에 비해 너무 "가벼워지고"이러한 종류의 동시성 오류는 해당 지점에 도달했음을 나타냅니다.
- 코드를 다시 작성하여 동시성을 줄이고 데이터베이스 트랜잭션의 수명이 짧도록합니다.
- 데이터베이스 시간 초과 옵션을 설정하여 기본 시간 초과 값 늘리기
참조 페이지 https://stackoverflow.com/questions/3172929
'파이썬' 카테고리의 다른 글
파이썬 우분투에 HDF5 및 pytables 설치 (0) | 2020.11.21 |
---|---|
파이썬 하위 프로세스에서 'shell = True'의 실제 의미 (0) | 2020.11.21 |
파이썬 목록 내에서 항목을 이동 하시겠습니까? (0) | 2020.11.21 |
파이썬 Python으로 minidom으로 요소 값 가져 오기 (0) | 2020.11.20 |
파이썬 Seaborn에서 막대 위에 백분율을 추가하는 방법은 무엇입니까? (0) | 2020.11.20 |
댓글