SQLite 开启 WAL 之后
一个小工具用 SQLite 存数据,后台任务写入时前台读取经常报 database is locked。打开 WAL 模式后读写互不阻塞,问题消失。
PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA busy_timeout = 5000;
注意 WAL 会多出 -wal 和 -shm 两个文件,备份时要一起拷,或者直接用 sqlite3 db ".backup out.db"。