Android中的“-journal”SQLite数据库是什么?

在我的类应用程序的数据库目录(/data/data/com.me.myApp/databases)中,对于我创build的每个sqlite数据库,都有一个相同名称的相应数据库,并在名称后附加“-journal”。

例如:myDatabase,myDatabase-journal,myOtherDatabase.db,myOtherDatabase.db-journal

这是什么?

和,

如果我为我的应用程序提供预先填充的数据库(按照: http : //www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ ),是否需要包括这些呢?

Solutions Collecting From Web of "Android中的“-journal”SQLite数据库是什么?"

这样的-journal文件不需要(也不应该)分发。

这是因为各种日志文件代表SQLite使用的 临时数据 (参考SQLite的使用临时的磁盘文件 )。 特别是-journal文件是一个回滚日志

回滚日志是用于在SQLite中实现primefaces提交和回滚function的临时文件。 (有关这个工作原理的详细讨论,请参阅标题为“SQLite中的primefaces提交”的单独文档。)回滚日志始终与数据库文件位于同一目录中,并且与数据库文件名称相同,除了8个字符“ -journal“附加。

回滚日志通常在事务首次启动时创build,通常在事务提交或回滚时删除。 回滚日志文件对于实现SQLite的primefaces提交和回滚function是必不可less的。 如果没有回滚日志,SQLite将无法回滚未完成的事务,并且如果事务中间发生崩溃或断电,整个数据库可能会在没有回滚日志的情况下被损坏。

一般来说,这些-journal文件应该只有一个打开的SQLite数据库时才存在 – 或者说,一个正在运行的事务 – 但是可以通过PRAGMA journal_mode进行控制。 使用默认的编译指示设置-journal文件将被删除。

DELETE日志模式是正常行为。 在DELETE模式下,回滚日志在每个事务结束时被删除。 事实上,删除操作是导致事务提交的操作。

当数据库没有打开,并且所有日志已被SQLite本身删除(或清除)时,确保复制实际的数据库文件; 这意味着所有事务已经完成,数据库处于一致状态。