【发布时间】:2011-10-22 10:34:46
【问题描述】:
我使用“SQlite 数据库浏览器”程序处理我的 sqlite 数据库。程序崩溃了,我丢失了我的更改。但是 db-journal 文件仍然存在。如何使用日志文件恢复数据库?当我使用 SQLite 数据库浏览器打开数据库时,旧数据库已打开。
我能做什么?
谢谢:-)
【问题讨论】:
我使用“SQlite 数据库浏览器”程序处理我的 sqlite 数据库。程序崩溃了,我丢失了我的更改。但是 db-journal 文件仍然存在。如何使用日志文件恢复数据库?当我使用 SQLite 数据库浏览器打开数据库时,旧数据库已打开。
我能做什么?
谢谢:-)
【问题讨论】:
除非您启用了预写日志记录,否则您的更改可能会丢失。 SQLite 中的默认日志系统的工作方式与您的预期相反。
来自文档:
传统的回滚日志的工作原理是将原始未更改的数据库内容的副本写入单独的回滚日志文件,然后将更改直接写入数据库文件。如果发生崩溃或 ROLLBACK,则将回滚日志中包含的原始内容回放到数据库文件中,以将数据库文件恢复到其原始状态。
见:
沃尔:https://sqlite.org/wal.html
文件格式,包括期刊: https://sqlite.org/fileformat.html
【讨论】: