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

时间:2014-10-06 01:49:21

标签: android sqlite journal

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

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

这是什么?

如果我为我的应用提供预先填好的数据库(根据:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/),我是否还需要包含这些数据?'

2 个答案:

答案 0 :(得分:22)

此类-journal个文件不需要(并且应该)分发。

这是因为各种日志文件代表SQLite使用的临时数据(ref。SQLite's Use Of Temporary Disk Files)。特别是-journal文件是回滚日志

  

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

     

回滚日志通常在首次启动事务时创建,通常在事务提交或回滚时删除。回滚日志文件对于实现SQLite的原子提交和回滚功能至关重要。如果没有回滚日志,SQLite将无法回滚未完成的事务,如果在事务中间发生崩溃或断电,整个数据库可能会在没有回滚日志的情况下损坏。

一般情况下,这些-journal文件只应存在,当存在一个开放的SQLite数据库 - 或者更确切地说,是一个正在运行的事务 - 但可以通过PRAGMA journal_mode进行控制。使用默认的pragma设置,-journal文件将被删除。

  

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

当数据库打开且所有日记帐已被SQLite本身删除(或清除)时,请务必复制实际的数据库文件;这意味着所有交易都已完成且数据库处于一致状态。

答案 1 :(得分:0)

DB-JOURNAL 文件是 SQLite 数据库管理系统在应用程序和数据库之间的事务期间创建的临时数据库文件。它包含一个回滚日志,这是一个临时数据库,用于存储数据库的最新状态。