seh*_*ugg 19 sqlite iphone core-data
我的iPhone应用程序的少数客户正在经历核心数据存储损坏(我假设是这样,因为错误是"无法保存到数据存储:操作无法完成.(可可错误259.)")
有没有其他人经历过这种商店腐败?我很担心,因为我的目标是很快推出执行模式迁移的更新,我担心这会暴露更多的问题.
我假设Core Data/SQLlite API使用原子操作并且不受损坏,除非底层文件系统遇到损坏.
有没有办法减少/防止腐败,以及重现腐败的方法,所以我可以测试这个(到目前为止我没有成功).
还得到此错误:"/var/mobile/Applications//Documents/foo.sqlite中的数据库已损坏.SQLite错误代码11,数据库磁盘映像格式错误."
Mar*_*tin 20
它发生在我身上时,我手动改写我Base.sqlite
没有删除Base.sqlite-wal
和Base.sqlite-shm
.实际上,这些文件是新的SQLite 3.7功能,可能在iOS 7中添加.
为了解决这个问题,我删除了Base.sqlite-*
sqlite并从我的新基础版本重新生成它们.
您收到的错误在 Foundation.h 中定义
NSFileReadCorruptFileError = 259, // 读取错误(文件损坏、格式错误等)
我从来没有在实际的商店中遇到过这种情况,但我也遇到过类似的问题,但权限不佳(在 Mac 上)。我也没有看到有人在网上提到类似的错误。Core Data 中的错误预防系统相当强大。
我猜想创建此文件的最简单方法是发送持久存储来查看错误的文件,例如意外地将其定位到文本文件。如果它需要 SQL 存储但发现其他内容,它会抱怨文件已损坏。这只是黑暗中的一枪。
这将很难追踪,因为这样的错误在核心数据中非常罕见,以至于没有任何工具可以帮助查找问题。
我会推荐: