2013-03-29 2 views
2

journal_mode가 delete 인 SQLite DB와 상호 작용하는 Java 프로그램이 있습니다.pagesize가 64KB 인 sqlite DB를 열려고 할 때 예외가 발생했습니다.

이 프로그램은 모든 DB에서 잘 작동하며 DB의 페이지 크기가 32KB 인 경우 트랜잭션을 수행 할 수 있습니다.

하지만 sqlite DB에는 pagesize가 64KB입니다. 그리고 실행할 때 stmt.executeQuery(); 그 DB에 , 그것은 예외를 나에게
은 java.sql.SQLException을 제공 : [SQLITE_NOTADB] 파일은 그 (파일 데이터베이스를 암호화 여부입니다)

은 아무도 알려 주시기 바랍니다 수있는 데이터베이스 파일이 아닙니다 열어 무엇을 할 수 이것에 대한 해결책이 될 것인가? 이 DB는 암호화되지 않고 journal_mode가 삭제 전용입니다.

SQLITESpy 도구를 사용하여이 DB를 열 수 있습니다. 64킬로바이트 페이지를 사용

감사

+0

다른 SQLite 도구로 해당 파일을 열 수 있습니까? –

+0

예 sqlitespy 도구로이 DB를 열 수 있습니다. – user1108687

+0

SQLiteSpy와 JDBC 드라이버 모두에서'sqlite_version();과'PRAGMA compile_options;'의 결과는 무엇입니까? –

답변

1

데이터베이스가 다른 응용 프로그램에서 열려 있고 wal 및 shm 파일이 열려있는 경우 동일한 이상한 오류가 발생합니다.

echo ".dump" | sqlite3 database.db | sqlite3 dbcopy.db 

를 쿼리의 복사에 관한 연구 : 나는 다음과 같은 해결 방법을 사용하고 같은 이상한 디자인 internall 세부 귀찮게하고 싶지 않기 때문에. 나는 심지어 데이터베이스 손상 문제로부터 "새로운"sqlite 디자인을 괴롭히는 것처럼 보이는 이런 식으로 보호받습니다. sqlite 디자이너가 외부 인터페이스가 훨씬 안정적이고 깨끗한 지 확인하고 오류 및 손상과 같은 내부 디자인 문제를 표시하지 않기를 바랍니다.

관련 문제