끼 워 넣 기 SQL 사용 오류 해결 (5): database is locked

전에 만난 적 이 있어 요. sqlite 3exec () 함수 조작 데이터베이스 에 database is locked 와 같은 문제 가 발생 하여 이 문 제 를 특별히 기록 합 니 다.SQLite 는 가 벼 운 데이터베이스 입 니 다. 디자인 목 표 는 내장 형 입 니 다. 그리고 현재 많은 내장 형 제품 에서 사용 되 고 있 습 니 다. 자원 을 매우 낮 게 사용 하고 있 습 니 다. 내장 형 장치 에 서 는 수백 K 의 메모리 만 있 으 면 될 것 입 니 다.그러나 SQL 은 단일 스 레 드 작업 만 지원 합 니 다. 응용 프로그램 에서 여러 스 레 드 가 데이터 베 이 스 를 동시에 조작 하면 database is locked 의 상황 이 발생 할 수 있 습 니 다.database is locked 가 나타 나 면 다른 프로그램 (스 레 드) 이 데이터 베 이 스 를 차지 하고 있 습 니 다. 다음 절차 에 따라 검사 할 수 있 습 니 다.
  • 다른 프로 세 스 가 데이터 베 이 스 를 차지 하고 있 는 지 확인 합 니 다.
  • 현재 프로 세 스 가 다 중 스 레 드 작업 데이터 베 이 스 를 가지 고 있 는 지 확인 합 니 다.
  • 확인 한 후에 다른 프로 세 스 가 데이터 베 이 스 를 조작 하지 않 았 고 현재 프로 세 스 도 다른 스 레 드 가 데이터 베 이 스 를 조작 하지 않 은 것 을 발견 하면 다음 과 같은 문 제 를 고려 합 니 다.

  • SQL 은 여러 응용 프로그램 이 동시에 데이터 베 이 스 를 사용 하 는 것 을 방지 하기 위해 데이터베이스 내부 에 파일 잠 금 fcntl () 을 사용 했다.다른 응용 프로그램 이 데이터 베 이 스 를 사용 하지 않 았 지만 database is locked 를 보고 한 이상 이 자물쇠 만 문제 가 생 겼 습 니 다.Liux 커 널 에서 파일 자 물 쇠 는 컴 파일 지원 이 필요 합 니 다. Liux 커 널 컴 파일 옵션 이 지원 되 는 지 확인 하 십시오. 파일 자 물 쇠 를 지원 하 는 지 여 부 는 다음 과 같 습 니 다. Liux 커 널 디 렉 터 리 에서 make menuconfig ARCH = arm 을 실행 하여 커 널 설정 을 선택 하 십시오. 검사 항목 은 다음 과 같 습 니 다.
    File systems  ---> 
    	[*] Enable POSIX file locking API
    

    위의 경로 와 같이 Enable POSIX file locking API 이 선택 되 었 는 지 확인 하 십시오. 이것 은 Liux 커 널 이 파일 잠 금 에 대한 작업 에 영향 을 줄 것 입 니 다. 선택 한 후에 저장 하고 종료 하 며 다시 컴 파일 하고 태 우기 테스트 를 합 니 다. 제 가 만난 database is locked 는 이렇게 해결 되 었 습 니 다.감사합니다

    좋은 웹페이지 즐겨찾기