如果在写入sqlite db(或CoreData)时应用崩溃,则有时db文件将被破坏,此后db的初始化可能无法打开。

我现在正在做的是删除无法打开的db文件,并复制要使用的新文件。

我想知道解决这种情况的最佳方法是什么?

===============>>#1 票数:1 已采纳

由于SQLite具有原子提交的性质,因此您永远都不会经历数据库损坏的情况,这可能是由于在iOS或硬盘驱动器中启用了诸如“写入缓存”之类的功能,甚至可能是由硬件引起的失败。

SQLite维护一个日记文件以回滚提交,并在断电或其他突然关闭的情况下使数据库返回一致状态。 如果发生损坏,则意味着OS响应SQLite表示实际上实际上尚未将其提交到介质上时已完成写操作。 请确保在您的应用程序中使用写入缓存时将其禁用。 有关更多信息,请参见SQLite Atomic Commit参考

否则,人们似乎“修复” SQlite数据库的常用方法是将数据库文件.dump到另一个文件中。 像这样echo ".dump" | sqlite old.db | sqlite new.db echo ".dump" | sqlite old.db | sqlite new.db

希望这可以帮助...

[资源]

  ask by Allen Hsu translate from so

未解决问题?本站智能推荐: