• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

没有WAL文件的核心数据.sqlite备份可以恢复到WAL模式吗?

IOS 来源:SAHM 4次浏览

请耐心等待 – 我会尝试在这个问题中使用正确的术语。我有一个iOS应用程序,允许用户现在创建其Core Data支持的.sqlite数据库的备份。出于某种原因,遥想当年,我为journal_mode为“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模式下运行。我希望这是有道理的 – 这对我来说有点令人困惑,但我希望对如何解决这个问题有任何想法。没有WAL文件的核心数据.sqlite备份可以恢复到WAL模式吗?

===========解决方案如下:

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

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


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)