2013-03-29 45 views
2

我有一個Java程序,它與具有journal_mode作爲刪除的SQLite數據庫交互。嘗試打開sqlite數據庫時,頁面大小爲64KB時出現異常

此程序適用於所有數據庫,並且我能夠進行事務,只要數據庫的頁大小爲32 KB。

但是有一個sqlite數據庫的頁面大小爲64 KB。當我嘗試執行 stmt.executeQuery(); 上DB,它給了我異常
值java.sql.SQLException:[SQLITE_NOTADB]打開的文件不是數據庫文件(文件加密或不是一個數據庫)

可有人請讓我知道什麼事情成爲這個解決方案嗎?該數據庫未加密,並且只有journal_mode作爲刪除。

雖然我可以用SQLITESpy工具打開這個數據庫。

謝謝

+0

你可以使用任何其他SQLite工具打開該文件嗎? –

+0

是的,我可以用sqlitespy工具打開這個數據庫。 – user1108687

+0

在SQLiteSpy和JDBC驅動程序中,SELECT sqlite_version();'PRAGMA compile_options;'的結果是什麼? –

回答

1

如果數據庫被另一個應用程序打開並且打開了wal和shm文件,我會得到相同的奇怪錯誤。因爲我不希望這樣的奇怪的設計internall細節我用以下解決方法打擾:

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

,並在副本上的查詢工作。我甚至可以通過這種方式防止數據庫損壞問題,這似乎也困擾着「新」的sqlite設計。我希望sqlite設計人員能確保外部接口更加穩定和乾淨,並且不會出現諸如故障和損壞等內部設計問題。

相關問題