2013-01-24 52 views
0

我想知道爲什麼SQLite在path中創建兩個文件,這些文件有什麼區別。SQLite數據庫文件

我有一個數據庫名稱mydatabase

當我在給定的路徑中看到有兩個文件。

data/data/pack name/databases/.... 

mydatabase 1-

2- mydatabase-journal

回答

1
mydatabase

是主數據庫文件,其中包含有關該數據庫的一切。

mydatabase-journal是日誌文件。它在默認情況下不存在,只有在必要時才由SQLite創建,以保持SQLite想要對數據庫執行的意向日誌。基本上,這是交易完成後應該對主數據庫文件做什麼的意圖。如果您正常完成所有事務並正常斷開與數據庫的連接,則-journal文件通常會自動刪除。

如果斷開唐突 - 像過程殺死或崩潰,-journal文件將保留,不應該被刪除。如果下一次的SQLite再次打開這個數據庫,它會注意到-journal文件的存在和將重播或回滾未完成的事務,以使主數據庫文件是一致的,並沒有損壞。

如果手動刪除文件-journal,恢復並不能完全保證數據庫可能被完全破壞 - 所以,不要刪除-journal文件。

正確擺脫-journal文件也許最簡單的方法就是做這個命令:

sqlite3 mysqlitedatabase.db VACUUM 

將真空(優化)你的數據庫,並應只留下主文件作爲一個結果。

+0

謝謝answer.mvp – Unknown