0

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

我有一个数据库名称mydatabase

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

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

1-mydatabase

2-mydatabase-journal

4

1 回答 1

1

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

mydatabase-journal是日志文件。默认情况下它不存在,并且仅在必要时由 SQLite 创建,以保留 SQLite 想要对数据库执行的操作的意图日志。基本上,这是在事务正确完成后应该对主数据库文件执行的操作的意图。如果您正常完成所有事务并优雅地断开与数据库的连接,-journal文件将正常自动删除。

如果断开连接是突然的——比如进程被杀死或崩溃,-journal文件将保留并且不应该被删除。当 SQLite 下次再次打开该数据库时,它会注意到-journal文件的存在,并会重播或回滚未完成的事务,从而使主数据库文件保持一致且不损坏。

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

正确删除-journal文件的最简单方法可能是执行以下命令:

sqlite3 mysqlitedatabase.db VACUUM

它将 VACUUM(优化)您的数据库,结果应该只留下主文件。

于 2013-01-24T03:51:46.450 回答