Jef*_*rod 55 sqlite file-extension android
在运行一些关闭数据库的测试,删除它并用测试夹具替换之后,我看到了我的应用程序和数据库文件状态的一些奇怪行为.当我在调试PC上使用工具检查数据库文件时,它与应用程序本身似乎报告的内容不匹配.这种奇怪的行为可能与这个bug有关.
我注意到有两个文件具有与数据库相同的基本名称(具有正常.db扩展名.)文件扩展名是.db-shm和.db-wal,并且每个.db文件都比文件的时间戳更新.
我假设这些是某种类型的临时文件.但是,我想知道应用程序是否被终止,是否应该删除它们?更重要的是,我假设.db在操作系统终止应用程序之前,存储在其中的任何数据都会在文件内更新.它是否正确?
sat*_*ine 29
你是对的,这些是SQLite创建的临时文件.如果您手动删除主数据库,您应该删除它们.从我可以收集的内容来看,WAL是对回滚日志的替代,它使SQLite能够在事务失败时回滚更改.SQLite如何使用它们以及为什么它们被保存了这么长时间取决于SQLite的作者,但一般来说SQLite看起来非常坚固,所以我不会太担心它们.有关详细信息,请查看此处:
http://www.sqlite.org/fileformat2.html#walindexformat
这些文件是SQLite 3.7的新功能.我不确定它们的存在是否与你指出的错误相关,但错误报告建议无论如何都要解决.
小智 5
我还没有足够的声誉,只能在satur9nine的答案中添加评论,所以在此继续介绍。
根据SQLite文档,DB-SHM文件是共享内存文件,仅当SQLite以WAL(预写日志)模式运行时才存在。这是因为在WAL模式下,共享同一个db文件的数据库连接必须全部更新同一存储位置(用作WAL文件的索引),以防止发生冲突。
对于WAL文件,如上所述,它是一个写日志/日志,对于提交/回滚目的很有用。如果数据库未在运行,则删除该文件是完全可以的,实际上,如果存在该文件,它将在重新启动数据库时自动删除(因为它仅在数据库正在主动写入/提交数据时才有用)。
| 归档时间: |
|
| 查看次数: |
52436 次 |
| 最近记录: |