1
如果應用崩潰寫入一個SQLite分貝(或CoreData)時,有時分貝文件將被打破,在此之後,DB的初始化可能無法打開。寫入sqlite數據庫(iOS)時崩潰後應該怎麼做?
我在做什麼,現在,如果它無法打開被刪除數據庫文件,並複製一個新的使用。
我想知道什麼是最好的方法來處理這種情況?
如果應用崩潰寫入一個SQLite分貝(或CoreData)時,有時分貝文件將被打破,在此之後,DB的初始化可能無法打開。寫入sqlite數據庫(iOS)時崩潰後應該怎麼做?
我在做什麼,現在,如果它無法打開被刪除數據庫文件,並複製一個新的使用。
我想知道什麼是最好的方法來處理這種情況?
由於的SQLite原子提交性質,你永遠不應該遇到數據庫損壞,如果你是,這可能是由於實現的功能,如內的iOS「寫入緩存」或硬盤驅動器本身,或者可能甚至可能由硬件故障引起。
SQLite的維護日誌文件回滾提交和在電源故障或其他突然關閉的情況下,數據庫恢復到一致狀態。如果發生破壞,這意味着操作系統響應SQLite聲明寫入操作已經完成,但實際上它還沒有物理地落實到媒體上。請確保在您的應用程序中使用寫緩存功能時禁用。有關更多信息,請參閱SQLite Atomic Commit reference。
否則,常用的方法人似乎「修理」一個SQLite數據庫是.dump
數據庫文件到另一個。像這樣echo ".dump" | sqlite old.db | sqlite new.db
希望這有助於...
根據這個頁面 - > http://www.sqlite.org/tempfiles.html(第2.1節)的SQLite應自動處理電源通過回滾任何未成功完成的失敗或崩潰。更多信息請見本頁第4節http://www.sqlite.org/atomiccommit.html – borrrden