在我的andoid应用程序的数据库目录(/data/data/com.me.myApp/databases)中,对于我创建的每个sqlite数据库,都有一个同名的相应数据库,名称后附加“-journal”。
例如:myDatabase、myDatabase-journal、myOtherDatabase.db、myOtherDatabase.db-journal
这是什么?
and,
如果我为我的应用程序提供预填充数据库(按照:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/)我还需要包括这些吗?
Such -journal
文件不需要(并且应该not) 进行分发。
这是因为各种日志文件代表临时数据 (ref. SQLite对临时磁盘文件的使用 https://www.sqlite.org/tempfiles.html)由 SQLite 使用。特别是一个-journal
文件是一个回滚日志.
回滚日志是一个临时文件,用于在 SQLite 中实现原子提交和回滚功能。 (有关其工作原理的详细讨论,请参阅标题为 SQLite 中的原子提交的单独文档。)回滚日志始终位于与数据库文件相同的目录中,并且与数据库文件具有相同的名称,除了 8 个字符“ - 日记”附后。
回滚日志通常在事务首次启动时创建,并且通常在事务提交或回滚时删除。回滚日志文件对于实现 SQLite 的原子提交和回滚功能至关重要。如果没有回滚日志,SQLite 将无法回滚未完成的事务,并且如果在事务中间发生崩溃或断电,如果没有回滚日志,整个数据库可能会损坏。
一般来说这些-journal
文件应该只存在when有一个开放的 SQLite 数据库 - 或者更确切地说,一个正在运行的事务 - 但可以通过控制PRAGMA 日志模式 https://www.sqlite.org/pragma.html#pragma_journal_mode。使用默认的编译指示设置-journal
文件将被删除。
DELETE 日志记录模式是正常行为。在 DELETE 模式下,回滚日志在每个事务结束时被删除。事实上,删除操作是导致事务提交的操作。
确保only当数据库存在时复制实际的数据库文件not打开并且所有日志已被 SQLite 本身删除(或清除);这意味着所有事务都已完成并且数据库处于一致状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)