【发布时间】:2018-05-16 20:49:54
【问题描述】:
请耐心等待 - 我将尝试在这个问题中使用正确的术语。我有一个 iOS 应用程序,它允许用户创建他们支持 Core Data 的 .sqlite 数据库的备份已有好几年了。出于某种原因,我将 journal_mode 的 pragma 选项设置为“MEMORY”,这意味着过去几年所做的每个备份都没有 WAL 或 SHM 文件。我正在重写我所有的数据库代码,并且我知道 iOS 的当前默认 journal_mode 是“WAL”。当我导入使用 journal_mode "MEMORY" 制作的备份时,我想以某种方式最终使该文件在 WAL 模式下运行(我希望所有新备份都相同 - 在 WAL 模式下)但我不确定这是否甚至是可能的。可以强制一个从未有过 WAL 或 SHM 文件的 .sqlite 开始创建它们吗?我现在正在尝试使用 NSPersistentStore 方法来创建备份和恢复数据,我记得读过整个过程中使用的选项(即 journal_mode)需要保持一致(如果我能找到它,我将发布此链接)。我相信,因为我没有 WAL 文件,所以我需要使用“MEMORY”或“DELETE”journal_mode 进行导入。但是,我不确定这是否意味着该文件将永远必须在没有 WAL 文件的情况下运行,或者我是否可以做一些事情让它在 WAL 模式下运行。我希望这是有道理的 - 这让我有点困惑,但我会很感激任何关于如何解决这个问题的想法。
【问题讨论】:
标签: ios sqlite core-data restore wal