如何将SQLite 3.7 WAL文件的内容合并到主数据库文件中

Joh*_*rug 21 sqlite wal ios7

随着WAL(预写式日志记录)在SQLite的3.7启用(这是iOS上的7对核心数据的默认值),我该如何合并/提交从-wal文件中的内容返回到主数据库文件?

Joh*_*rug 29

从命令行执行以下操作:

  1. sqlite3 MyDatabase.sqlite
  2. VACUUM;
  3. CTRL-D退出sqlite控制台.

完成!

-wal文件现在应该具有0的大小,并且所有内容都应该在主数据库文件中.

  • 简称为“sqlite3 MyDatabase.sqlitevacuum”:) (6认同)
  • 此线程中提出了两种解决方案:(1)PRAGMA wal_checkpoint(2)VACUUM并退出。我也正在使用Core Data。我的主要sqlite文件为46 MB,我的-wal文件为1.2 GB。我的结果:PRAGMA wal_checkpoint或PRAGMA wal_checkpoint(1)无效。VACUUM将-wal文件的大小从1.2 GB减少到40.8 MB,并将主sqlite从46 GB减少到40.5 MB。重复执行这两个命令不会导致进一步的减少。但是,如Johannes所述,退出sqlite3控制台会将-wal文件减小为0。 (2认同)