【发布时间】:2013-10-01 07:31:55
【问题描述】:
我已经阅读了很多关于 ios7 SQLite / Core Data 堆栈中新的 WAL 默认设置的帖子。
首先,这看起来是个好主意……尽管我需要根据我的业务需要不时将数据库复制到远程 Web 服务。目前我只备份 SQLITE 文件,无法将另外 2 个文件添加到我正在使用的 web 服务操作中。这意味着我的备份显然不是最新的,因此毫无意义。
其他人建议我应该使用 journal_mode=DELETE (NSSQLitePragmasOption) 禁用 WAL,这对我来说是一种可以接受的解决方法。不过,我对此感到不舒服。感觉就像我错过了一个相当不错的性能提升。
理想情况下,我希望能够告诉 Core Data / SQLite 将 SHM/WAL 同步到主数据文件,然后执行备份。有没有办法在不挖掘疯狂的私有或无证 API 的情况下做到这一点?
【问题讨论】:
-
你有什么解决办法吗?
-
我遇到了同样的问题。我正在从 ios 6 迁移到 ios 7,ios6 似乎只有 .sqlite 文件来存储数据。但是 ios7 有 .shm 和 .wal 文件。我使用 fileWrapper 将文件保存到单个文件中。如果在 iOS7 中我没有禁用 *.shm 和 *.wal,那么 iOS6 就不能使用在 iOS7 中备份的文件
-
我选择了简单的选项(以前的默认模式)。我没有找到好的解决方案。
标签: sqlite core-data ios7 shared-memory wal