-wal 文件在 SQLite 中消失的后果?

Ert*_*lle 4 sqlite wal

如果使用预写日志记录的 SQLite 数据库被未检查点的事务中断(由于电源故障或其他原因),然后在缺少临时 -wal 文件的情况下重新打开,数据库是否会干净地打开到最后一个检查点时的状态,或者它会以某种方式被损坏吗?

我们正在尝试让 SQLite 与 iCloud 配合使用(是的,我们知道你不应该这样做,但我们也制作了 Windows 和 Android 应用程序,并且需要一个跨平台数据库解决方案),并且我们认为 WAL 提供了避免维护数据库的两个副本的潜在方法 - 我们将 -wal 文件保留在 iCloud 之外,但将主数据库存储在其中,从而避免 iCloud 备份回滚日志(或中途备份数据库)的问题没有这些日记帐的交易)。

CL.*_*CL. 5

文件格式文档提到了“热 WAL 文件”,但这仅适用于未提交的数据。

数据库文件本身不包含有关文件中已提交数据的任何信息-wal,即检查点之前的事务通常根本不会更改主数据库文件。因此,删除该-wal文件只会将数据库恢复到最后一个检查点之后的状态(已过时,但一致);稍后提交的所有事务都将丢失。