SQLite数据库文件

时间:2013-01-24 03:36:06

标签: sqlite

我想知道为什么SQLite在路径中创建了两个文件。这些文件的差异是什么。

我有一个数据库名称mydatabase

当我在给定路径中看到有两个文件时。

data/data/pack name/databases/....

1- mydatabase

2- mydatabase-journal

1 个答案:

答案 0 :(得分:1)

mydatabase是主数据库文件,其中包含有关该数据库的所有内容。

mydatabase-journal是日记文件。默认情况下它不存在,只有在必要时才由SQLite创建,以保留SQLite想要对数据库执行的操作的意图日志。基本上,这是在事务正确完成后应该对主数据库文件做什么的意图。如果您正常完成所有事务并正常脱离数据库,-journal文件通常会自动删除。

如果断开连接突然 - 就像进程被终止或崩溃一样,-journal文件将保留,不应删除。当SQLite下次再次打开此数据库时,它会注意到-journal文件的存在,并将重放或回滚未完成的事务,这样主数据库文件是一致的而且没有损坏。

如果手动删除-journal文件,则无法保证恢复,数据库可能已完全损坏 - 因此,请勿删除-journal个文件。

正确摆脱-journal文件的最简单方法是执行以下命令:

sqlite3 mysqlitedatabase.db VACUUM

它将VACUUM(优化)您的数据库,因此应该只保留主文件。