objective-c - 使用 SQLite 数据库的 Mac 应用程序具有在 10.9 Mavericks 中创建的三个数据库

标签 objective-c macos sqlite core-data osx-mavericks

我有一个使用 sqlite 作为数据库的 Mac 应用程序。在 OSX 10.7 和 10.8 上,当应用程序启动时,它会创建一个文件作为数据库存储:appName.sqlite

升级到10.9 Mavericks后,我注意到当我启动应用程序时,它现在创建三个文件。

  • 应用程序名称.sqlite
  • appName.sqlite-shm
  • appName.sqlite-wal

我假设它们是某种临时文件,但我无法打开其中任何一个。据我了解,在 10.9 Mavericks 中,SQLite 已更新,我想知道此行为是否相关。

任何见解都会非常有帮助。

谢谢

最佳答案

邓肯的回应让我找到了正确的方向,我做了更多研究,结果发现发行说明中的​​答案是正确的......

https://developer.apple.com/library/mac/releasenotes/DataManagement/WhatsNew_CoreData_OSX/

Mavericks 对默认 SQLite 行为进行了以下更改,这导致了我的问题...

“核心数据 SQLite 持久存储将默认在 10.9 或之后链接的所有应用程序上使用 WAL Journal_mode。此模式提供比经典 SQLite 回滚(删除)日志更好的可靠性和性能。但是,不建议使用 WAL Journal_mode对于只读数据库文件,或者需要与 OS X v10.6 或更早版本互操作的文件。”

关于objective-c - 使用 SQLite 数据库的 Mac 应用程序具有在 10.9 Mavericks 中创建的三个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19825080/

相关文章:

mysql - SQLite (Ionic 2) 行中的重复值

ios - 如何使 UICollectionView 宽度依赖于屏幕尺寸?

iphone - 如何隐藏/删除联系人选择器上的搜索栏

cocoa - 文本字段渲染

swift - NSTableView:第二列在不应该出现的时候出现

django - 将数据库同步到 python django

ios - 在声明中调整iPhoneX/iPad/iPhone6的UIView位置

iphone - 触摸索引时显示 UITableView 的部分标题

java - 可以通过 afp 安装锁定用 java 打开的文件吗?

sqlite - Flutter:在进行大量数据库操作时避免 UI 卡住