0

引用 SQLite 网页“如果 page_size 编译指示用于在运行 VACUUM 命令之前指定新的页面大小,并且如果数据库未处于 WAL 日志模式,则 VACUUM 会将页面大小更改为新值。”

我的 SQLite 3.7 数据库在 1024 页大小上运行,由于我使用 Windows,我想我会尝试 4096 看看会发生什么。我一辈子都无法改变它,有人可以看看我的代码并告诉我我在哪里搞砸了,谢谢

 Dim connection As New SQLite.SQLiteConnection(conectionString)
            connection.Open()
            Dim oMainQueryR As New SQLite.SQLiteCommand
            oMainQueryR.Connection = connection
            oMainQueryR.CommandText = ("PRAGMA page_size=4096")
            oMainQueryR.ExecuteNonQuery()

            oMainQueryR = New SQLite.SQLiteCommand
            oMainQueryR.Connection = connection
            oMainQueryR.CommandText = ("vacuum")
            oMainQueryR.ExecuteNonQuery()
            connection.Close()

真空命令运行正常,只是它重新设置了页面大小,并且我没有运行 WAL

4

1 回答 1

0

问题是加密,去掉它,代码如下所示。感谢让我思考的CL!如果您没有加密,则只需删除对 ChangePasswords 的 2 个引用。有趣的是,将页面大小从默认的 1024 设置为 4096,数据库增长了大约 10%。

        Dim connection As New SQLite.SQLiteConnection(conectionString)
        connection.Open()
        connection.ChangePassword("")
        Dim oMainQueryR As New SQLite.SQLiteCommand
        oMainQueryR.Connection = connection
        oMainQueryR.CommandText = ("PRAGMA page_size=") & Val(Me.TextBox254.Text) & "; vacuum"
        oMainQueryR.ExecuteNonQuery()
        connection.ChangePassword(previous password)

        connection.Close()
于 2012-09-24T03:24:46.267 回答