5

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

首先,这看起来是个好主意......虽然我需要根据我的业务需求不时将数据库复制到远程 Web 服务。目前我只备份 SQLITE 文件,不能将另外 2 个文件添加到我正在使用的 web 服务操作中。这意味着我的备份显然不是最新的,因此毫无意义。

其他人建议我应该使用 journal_mode=DELETE (NSSQLitePragmasOption) 禁用 WAL,对我来说,这是一个可以接受的解决方法。不过,我对此感到不舒服。感觉就像我错过了一个相当不错的性能提升。

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

4

2 回答 2

2
$ sqlite3 yourFile.sqlite
SQLite version 3.7.12 2012-04-03 19:43:07
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> PRAGMA wal_checkpoint(RESTART);
0|20|20
sqlite> .exit
$ 
于 2013-12-26T14:16:50.337 回答
2

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

于 2013-09-25T16:11:26.153 回答