database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Q&A 1301 게시물 읽기
No. 1301
SQLITE3사용시 INSERT가 안됩니다..
작성자
최영대(astheocean)
작성일
2007-02-09 01:56ⓒ
2007-02-09 01:59ⓜ
조회수
9,904

간단한 윈도우 서버를 만들었는데요(멀티스레드)


SQLITE3를 사용해서 클라이언트에서 온 데이터를 INSERT 해주려 하니까

계속해서 SQLITE_BUSY만 뜹니다.


connection은 로컬인지라 매번 sqlite3_open으로 만들어서 사용하고 있구요..


INSERT만 하면 무조건 SQLITE_BUSY가 떠서..

여기저기 뒤져봐서

BEGIN TRANSACTION

QUERY

COMMIT TRANSACTION

이런 순으로도 해봤는데.. 위처럼 하면 COMMIT에서 똑같이 SQLITE_BUSY가 뜨네요 ㅠ_ㅠ





신기한건 다른 프로세스 (전혀 다른 DB파일을 쓰고있는..) 에서 INSERT를 하면 그 디비에는 잘 들어간다는겁니다.


살려주세요-_-);;;;


윈XP에 SQLITE 3.3.12 입니다. 


NTFS에서 불안정하단 얘기도 본것 같은데 이거때문일런지요..ㅠ.ㅠ

이 글에 대한 댓글이 총 3건 있습니다.

그 에러 메시지는 sqlite의 고질적인 문제입니다. 태생 자체가 다른 DBMS들하고 달라서 보통 DBMS를 쓰는것처럼 쓰다가는 그 에러를 심심찮게 만나게 됩니다.


먼저 해당 DB파일이 깨졌는지 확인부터 해보세요. 읽기는 되는데 쓰기가 계속해서 안되는 경우가 있습니다. 많은 쓰레드가 동시에 쓰려고 할 때 저널이 깨져서 계속 쓰기 대기 상태가 되는 때가 있씁니다. sqlite3 디비파일 해서 데이터를 조작해보고 잘 되면 아래로;


int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);


위 API는 BUSY 에러가 리턴될 상황에 실행해 보는 부분입니다. 저 핸들러를 등록하게 되면 콜백으로 등록된 함수가 BUSY 인 상황에 호출되게 됩니다. 쓰레드끼리 DB파일에 쓰기 경쟁을 하고 있다면 BUSY 콜백에서 콘텍스트 스위치를 해서 현재 쓰기 작업중인 쓰레드가 쓰는 작업을 마치게 해줘야 합니다.


sqlite의 파일을 쓰는 과정이나 락이 발생하는 시점등을 살펴보시면 될것 같습니다. commit 하는 순간에 저널들이 merge 되는데 이때 락이 발생합니다. 쓰레드끼리 쓰기 경쟁을 최대한 피하는 것이 좋습니다.

신기배(소타)님이 2007-02-10 15:01에 작성한 댓글입니다.

쓰기 스레드도 하나를 두고서 테스트를 하고..


db가 깨졌나 싶어, 새로이 만들고 sqlite3.exe에서 데이터 삽입도 다 해봐도 결국엔 SQLITE_BUSY더군요;


이건 뭐; 어떻게 할 수 없는거 같아 보이네요..


답변 감사합니다.

최영대(astheocean)님이 2007-02-12 01:06에 작성한 댓글입니다.

SQLite 의 비애로군요 ^^

아직도 해결안 되었다니...
그럼 VLDB 에서는 한마디로 불가한 상황이 오겠군요.

정재익(neople)님이 2007-02-12 12:44에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
1304[질문]ER model 과 Relational model 의 차이점
온성원
2007-02-15
6112
1303클라이언트 프로그램에서 내장 DB로 검색기능구현??? [1]
FP
2007-02-12
6813
1302DB 구조에 대해서 궁금한게 있습니다..
STRIKER
2007-02-09
6303
1301SQLITE3사용시 INSERT가 안됩니다.. [3]
최영대
2007-02-09
9904
1298ANSI SQL 관련 볼만한 책? [1]
NoFATE
2007-01-29
7172
1297데이터베이스를 배우려는 학생인데요.. [1]
천지은
2007-01-29
6821
1296(초보)오라클 vs DB2 [1]
왕초보
2007-01-26
6764
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2020 DSN, All rights reserved.
작업시간: 0.045초, 이곳 서비스는
	PostgreSQL v13.1으로 자료를 관리합니다