sqlite PRAGMA设置是永久设置还是在数据库关闭后“消失”?

时间:2019-03-14 08:50:07

标签: sqlite

我想知道是否有PRAGMA语句,例如。

PRAGMA journal_mode = OFF

在关闭连接后,还是在每次打开与数据库的连接时都必须设置它的情况下,db中的“剩余”?

1 个答案:

答案 0 :(得分:0)

PRAGMA设置是否是永久性的,取决于所使用的各个PRAGMA设置。

例如 journal_mode 通常不是永久性的:-

  

此编译指示查询或设置关联数据库的日志模式   与当前数据库连接。

但是,设置 WAL 是永久性的,按照:-

在数据库头文件中将偏移量18和19的字节设置为2。
  

WAL日记模式使用预写日志而不是回滚   日记以执行交易。 WAL日记模式为   持续性;设置后,该效果在多个   数据库连接以及关闭并重新打开数据库之后。一种   WAL日记模式下的数据库只能通过SQLite版本访问   3.7.0(2010-07-21)或更高版本。

PRAGMA schema.journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | WAL | OFF

并按照

  

1.3.3。文件格式版本号

     

偏移量为18和19的文件格式写入版本和文件格式读取版本旨在   用于在将来版本的SQLite中增强文件格式。在   当前版本的SQLite,对于回滚,这两个值均为1   日记模式和2个WAL日记模式。如果是   编码为当前文件格式规范的SQLite遇到   读取版本为1或2但写入版本的数据库文件   大于2,则必须将数据库文件视为   只读。如果读取版本大于2的数据库文件是   遇到,则无法读取或写入该数据库。

Database File Format