gpt4 book ai didi

ios - 没有 WAL 文件的 Core Data .sqlite 备份可以恢复为在 WAL 模式下运行吗?

转载 作者:行者123 更新时间:2023-12-03 02:39:11 29 4
gpt4 key购买 nike

请耐心等待 - 我将尝试在这个问题中使用正确的术语。我有一个 iOS 应用程序,多年来允许用户创建其 Core Data 支持的 .sqlite 数据库的备份。出于某种原因,很久以前,我将 Journal_mode 的 pragma 选项设置为“MEMORY”,这意味着过去几年中所做的每个备份都没有 WAL 或 SHM 文件。我正在重写所有数据库代码,并且我知道 iOS 当前默认的 Journal_mode 是“WAL ”。当我导入使用journal_mode“MEMORY”制作的备份时,我希望以某种方式最终使该文件在WAL模式下运行(我希望所有新备份都相同 - 在WAL模式下),但我不确定这是否甚至是可能的。是否可以强制从未有过 WAL 或 SHM 文件的单个 .sqlite 开始创建它们?我现在正在尝试使用 NSPercientStore 方法来创建备份和恢复数据,我记得读过整个过程中使用的选项(即journal_mode)需要保持一致(如果我能找到它,我将发布该链接) )。我相信,因为我没有 WAL 文件,所以我需要使用“MEMORY”或“DELETE”journal_mode 进行导入。但是,我不确定这是否意味着该文件将永远必须在没有 WAL 文件的情况下运行,或者我是否可以采取一些措施让它在 WAL 模式下运行。我希望这是有道理的 - 这对我来说有点令人困惑,但我将不胜感激任何关于如何解决这个问题的想法。

最佳答案

只要您具有独占访问权限,您就可以随时更改数据库的日志模式;只需打开它,然后执行 PRAGMA 。 (事实上​​,这是启用 WAL 模式的唯一方法。)

请注意,只有WAL模式才会持久化存储在数据库文件中;任何其他日志模式都是连接的属性;当非文件WAL打开时,默认处于DELETE模式。

关于ios - 没有 WAL 文件的 Core Data .sqlite 备份可以恢复为在 WAL 模式下运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47615566/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com