【问题标题】:VACUUM database and WAL modeVACUUM 数据库和 WAL 模式
【发布时间】:2012-11-17 19:41:34
【问题描述】:

我有WAL 模式的SQLite 数据库。每次我在数据库上执行VACUUM 时,下次我重新连接时,日志模式就会恢复为DELETE。

例如:

PRAMGA journal_mode; -- returns wal
VACUUM;
PRAGMA journal_mode; -- returns wal
-- disconnect then reconnect
PRAGMA journal_mode; -- returns delete

在 SQLite 3.7 中观察到的行为,但在 3.8 中似乎已修复。

【问题讨论】:

    标签: database sqlite vacuum


    【解决方案1】:

    -wal 文件在某些​​已知为空的情况下会被自动删除,例如在没有其他用户时关闭数据库。 它将在需要时在下一次事务中自动重新创建。

    日志模式(由PRAGMA journal_mode 报告)在此期间绝不应更改。

    【讨论】:

    • 这就是我所拥有的(伪代码)db.connect()db.execute("VACUUM;")db.disconnect() db 最初处于 WAL 模式。在执行disconnect() 之后,我看到的奇怪的事情是db 切换到DELETE 模式。在真空本身之后,数据库仍处于 WAL 模式。我使用PRAGMA journal_mode 对其进行测试,而不是-wal 文件的存在。
    猜你喜欢
    • 2016-08-26
    • 2011-02-07
    • 2013-06-11
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2015-04-06
    • 1970-01-01
    相关资源
    最近更新 更多