2013-05-28 2 views
1

Xerial SQLite 드라이버를 사용하여 거대한 데이터베이스에서 일부 쿼리를 수행하는 Java 프로그램에서 작업하고 있습니다. "SQLite Full"예외

내가 시퀀스는 TEXT, fieldOne, fieldTwo 및 쌍과 정수이다 쿼리

SELECT sequence,fieldOne,fieldTwo,pairs FROM events ORDER BY pairs DESC 

보내

. 그것은 약간의 시간이 소요되며이 예외를 throw :

[SQLITE_FULL] 삽입에 실패 내가 제한 제약 조건을 추가하면 데이터베이스 (데이터베이스 또는 디스크가 가득)

가득 차서, 그것은 확인을 간다.

현재 무슨 일입니까? 이것은 삽입 쿼리가 아니며 디스크가 가득 차지 않았습니다.

답변

5

SQLiteORDER BY 때문에 임시 테이블/파일을 생성하고 있습니다. 디스크가 생성 된 임시 파일을 삭제 한 후 확인하기 때문에 디스크가 꽉 찼습니다. 디스크 공간을 늘릴 수 없다면 결과를 일괄 처리하거나 ORDER BY을 제거하는 것이 좋습니다.

+1

당신 말이 맞습니다. 나는/tmp가있는 파티션에서 여유 공간을 확인하는 것을 완전히 잊어 버렸다. –

+0

이 예외가 발생하면 데이터베이스를 열려면 getWritableDatabase를 사용하십시오. – twlkyao