我想为我的应用程序提供一个 SQL 数据存储,但是现在,由于 Apple 引入了 WAL 日志,它生成 3 个文件而不是一个,所以我想知道我是否应该提供所有 3 个文件,或者我可以尝试强制使用 SQL创建一个检查点,将其全部合并到一个 .sql 文件中。
我真的很想使用这个新的 iOS 7 功能,所以回到回滚日志对我来说不是一种方式。
我想为我的应用程序提供一个 SQL 数据存储,但是现在,由于 Apple 引入了 WAL 日志,它生成 3 个文件而不是一个,所以我想知道我是否应该提供所有 3 个文件,或者我可以尝试强制使用 SQL创建一个检查点,将其全部合并到一个 .sql 文件中。
我真的很想使用这个新的 iOS 7 功能,所以回到回滚日志对我来说不是一种方式。
要强制 SQLite 创建检查点,请执行PRAGMA wal_checkpoint。
或者,使用 发布数据库journal_mode = DELETE
,并在安装文件后更改模式。
无论如何,只发送所有文件是没有问题的。(该-shm
文件不包含永久数据,可以忽略。)
您不必使用 WAL,这只是默认设置。您可以切换到不同的模式。添加持久存储时,将options
参数设置为类似
NSDictionary *options = @{ @"journal_mode": @"DELETE" };
然后,您将获得与早期 iOS 版本相同的日志行为。在创建预先填充的数据存储时使用它,您不需要处理额外的日志文件。