提问人:Lumpi 提问时间:3/14/2019 更新时间:3/14/2019 访问量:794
sqlite PRAGMA 设置是永久性的,还是在数据库关闭后“消失”的?
Are sqlite PRAGMA settings permanent or do they "disapear" after DB close?
答:
1赞
MikeT
3/14/2019
#1
PRAGMA 设置是否是永久性的,取决于所使用的单个 PRAGMA 设置。
例如,journal_mode通常不是永久性的,因为:-
此编译指示查询或设置关联数据库的日志模式 替换为当前数据库连接。
但是,设置 WAL 是持久的,将数据库头文件中偏移量 18 和 19 处的字节设置为 2,如下所示:
WAL 日记模式使用预写日志而不是回滚 日志来实现事务。WAL 日记模式是 持续;设置后,它会在多个中保持有效 数据库连接以及关闭并重新打开数据库后。一个 WAL 日志模式下的数据库只能由 SQLite 版本访问 3.7.0 (2010-07-21) 或更高版本。
编译指示 schema.journal_mode = 删除 |截断 |坚持 |内存 |WAL |关闭
并根据
1.3.3. 文件格式版本号
偏移量 18 和 19 处的文件格式写入版本和文件格式读取版本旨在允许 以增强 SQLite 未来版本中的文件格式。在 当前版本的 SQLite,这两个值都是 1 表示回滚 日志模式和 2 用于 WAL 日志模式。如果一个版本 编码为当前文件格式规范的 SQLite 遇到 读取版本为 1 或 2 但写入版本为 1 的数据库文件 大于 2,则数据库文件必须被视为 只读。如果读取版本大于 2 的数据库文件 遇到时,则无法读取或写入该数据库。
评论