【问题标题】:SQLCipher, encrypted-core-data and iOS - are two .sqlite-files normal?SQLCipher、encrypted-core-data 和 iOS - 两个 .sqlite 文件正常吗?
【发布时间】:2014-03-24 10:20:58
【问题描述】:

我正在使用 SQLCipher 加密我的数据库,因为其中包含敏感信息。一切似乎都正常,我只是很生气,因为我现在有两个 .sqlite 文件:

~/Library/Application Support/MyData.sqlite
~/Library/Application Support/MyApp/MyData.sqlite
~/Library/Application Support/MyApp/MyData.sqlite-shm
~/Library/Application Support/MyApp/MyData.sqlite-wal

第一个是加密的,第二个不是 - 但它不包含任何信息。所以它似乎有效,因为无法获取信息,但我只是想确保这是正确的。

【问题讨论】:

  • 什么是 shm 和 wal 文件已经解释过很多次了。重复例如:stackoverflow.com/questions/18870387/…
  • 是的,我不太关心 shm 和 wal 文件,但更关心两个 .sqlite 文件,即 - 为什么有两个 sqlite 文件?
  • 如果从模拟器中删除应用再重新安装,是不是每次都得到两个.sqlite文件?
  • 这似乎不正确。 -shm 和 -wal 文件来自 WAL,可以放心地忽略。但是,这并不能解释 2 个不同的 MyData.sqlite 数据库的存在。 @swalkner 第一个数据库是否包含任何数据?文件上的日期戳是什么?您确定没有在使用 SQLCipher 之前遗留下来吗?
  • 您的应用程序和核心数据模型是否都称为 MyData?至少使用 encrypted-core-data (使用 SQLCipher),您将看到每个模型的空(仅模式)数据库,模型名称和另一个数据库,其中包含命名为项目本身的所有加密数据(即 model1. sqlite,model2.sqlite,Project.sqlite)。

标签: core-data ios7 magicalrecord sqlcipher encrypted-core-data-sql


【解决方案1】:

您需要关闭 sqlite 的预写日志功能。要在 Core Data 中执行此操作,您需要在商店中设置 pragma 选项。你可以从这个related stackoverflow question看到如何设置标志

【讨论】:

  • 不过,这不包括两个 .sqlite 文件。
  • 这些文件是与预写日志相关的工件。首先禁用商店的功能不会创建它们。 iOS7 中的 CoreData 框架默认启用此功能。
  • 这没有回答问题,为什么有两个 sqlite 文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多