【问题标题】:Unable to open sql store file used in iOS application无法打开 iOS 应用程序中使用的 sql 存储文件
【发布时间】:2014-10-03 01:29:20
【问题描述】:

我在一个带有 Core Data 框架的应用程序中使用了一个基于 sql 的数据库。我没有为持久存储启用任何文件保护(使用 NSFileProtectionKey)。但我无法在库中的“缓存”文件夹下的目录中打开我的数据库文件存储。

你有没有遇到过这样的问题。下面是我尝试打开 sql 文件时得到的图像。但是,我可以在该文件夹中看到与 iOS 6 的不同之处在于存在两个与 sql 存储文件同名的附加文件(-shm 和 -wal)。

谁能帮我找到打开文件的解决方案。

【问题讨论】:

    标签: ios sql database sqlite core-data


    【解决方案1】:

    -shm-wal 是使用预写日志记录创建的日志文件。完整的数据库需要全部 3 个文件。我没有看到因不遵守此规则而错误触发的加密错误,但这似乎不是不可能的。

    请参阅 https://developer.apple.com/library/mac/qa/qa1809/_index.htmlhttp://asciiwwdc.com/2013/sessions/207

    【讨论】:

    • 是的。我看过这个苹果技术说明。我还没有尝试过日志删除选项。尽管如此,我相信这不会有什么不同,因为这个问题在 iOS 6 中是不可见的。
    • 如果 -shm 和 -wal 文件存在,那么您需要移动所有 3 个文件,并将它们放在一起。否则你有一个损坏的数据库。仅 .SQL 文件是不够的。从命令行使用sqlite3 打开文件会发生什么?
    • 我尝试了选项设置,它成功了。我可以打开文件,因为没有 -shm 和 -wal 文件。所以解决这个问题的方法是启用 SQLPragmaOptions 设置,将'journal_mode'设置为'DELETE'值。谢谢@Hal Mueller。
    猜你喜欢
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    相关资源
    最近更新 更多