2013-04-16 64 views
1

如果應用崩潰寫入一個SQLite分貝(或CoreData)時,有時分貝文件將被打破,在此之後,DB的初始化可能無法打開。寫入sqlite數據庫(iOS)時崩潰後應該怎麼做?

我在做什麼,現在,如果它無法打開被刪除數據庫文件,並複製一個新的使用。

我想知道什麼是最好的方法來處理這種情況?

+0

根據這個頁面 - > http://www.sqlite.org/tempfiles.html(第2.1節)的SQLite應自動處理電源通過回滾任何未成功完成的失敗或崩潰。更多信息請見本頁第4節http://www.sqlite.org/atomiccommit.html – borrrden

回答

1

由於的SQLite原子提交性質,你永遠不應該遇到數據庫損壞,如果你是,這可能是由於實現的功能,如內的iOS「寫入緩存」或硬盤驅動器本身,或者可能甚至可能由硬件故障引起。

SQLite的維護日誌文件回滾提交和在電源故障或其他突然關閉的情況下,數據庫恢復到一致狀態。如果發生破壞,這意味着操作系統響應SQLite聲明寫入操作已經完成,但實際上它還沒有物理地落實到媒體上。請確保在您的應用程序中使用寫緩存功能時禁用。有關更多信息,請參閱SQLite Atomic Commit reference

否則,常用的方法人似乎「修理」一個SQLite數據庫是.dump數據庫文件到另一個。像這樣echo ".dump" | sqlite old.db | sqlite new.db

希望這有助於...

[source]

相關問題