所以玩iMessages并思考如何支持它们以及各种各样的事情。
我在〜/ Library / Messages找到了他们的位置。
有三个文件
1. chat.db
2. chat.db-wal
3. chat.db-shm
如果我在向某人发送iMessage时运行一个监视文件更改的节点脚本,我看到chat.db-wal会立即更改,但chat.db需要一段时间才能更新。
我想尽快收到消息,但我不确定我是否可以阅读.db-wal文件。任何人都知道我是否可以阅读该文件?或者为什么.db文件似乎需要更长时间来更新?
感谢。
答案 0 :(得分:2)
一切都很好。你的数据就在那里。这就是SQLite的工作原理。
为了支持ACID事务,在崩溃或断电的情况下保证数据正确存储,SQLite首先将您的数据写入“预写日志”(*-wal
文件)。当数据库正确关闭或预写日志过满时,SQLite将使用日志内容更新数据库文件。
SQLite在阅读时,即使多个连接使用相同的数据库,也会首先查阅预写日志。日志中的数据仍然“在数据库中”。
SQLite应该在关闭数据库时将日志应用于数据库。如果没有,您可以运行PRAGMA wal_checkpoint;
手动检查日志文件。
推论:不删除-wal
文件,特别是如果您上次使用它时没有干净地关闭数据库。
有关SQLite中预写日志记录的更多信息,请参阅the SQLite documentation.