SQLite pragma (journal_mode) 语句持久化

rob*_*pim 4 sqlite

假设我有一个名为 的脚本schema.sql,用于使用我想要的模式分配一个新的 SQLite 数据库。

如果此脚本PRAGMA journal_mode = 'wal';之前包含任何 DML,数据库是否会持续设置为 WAL 模式?或者日志模式是否需要在每个连接/命令上配置?

Jac*_*ell 7

日志模式仅适用于 WAL 模式。来自文档

与其他日志模式不同,PRAGMAjournal_mode=WAL 是持久的。如果进程设置 WAL 模式,然后关闭并重新打开数据库,数据库将恢复为 WAL 模式。相反,如果进程设置(例如)PRAGMA Journal_mode=TRUNCATE,然后关闭并重新打开,数据库将以 DELETE 的默认回滚模式恢复,而不是之前的 TRUNCATE 设置。