带有WAL的ios7 sqlite数据库永远不会同步主数据库文件

viv*_*ern 5 sqlite core-data shared-memory wal ios7

我已经阅读了很多关于ios7 SQLite/Core Data堆栈中新的WAL默认设置的主题.

首先它看起来是个好主意......虽然我需要根据我的业务需求不时地向远程Web服务执行数据库副本.目前我只备份SQLITE文件,我无法将其他2个文件添加到我正在使用的webservice操作中.这意味着我的备份显然不是最新的,因此毫无意义.

其他人建议我应该使用journal_mode = DELETE(NSSQLitePragmasOption)禁用WAL,这对我来说是一个可接受的解决方法.不过,我对此并不满意.感觉就像我错过了相当不错的表现.

理想情况下,我希望能够告诉Core Data/SQLite将SHM/WAL同步到主数据文件,然后执行备份.有没有办法在不挖掘疯狂的私有或未记录的API的情况下这样做?

CL.*_*CL. 2

要将WAL 数据移动到数据库文件,请打开数据库文件并执行 SQL 语句PRAGMA wal_checkpoint(RESTART)

  • 使用 Core Data 时直接与 SQLite 对话绝对不是一个好主意。为了您自己的利益,您应该为此使用 Objective C 方法。 (3认同)