【问题标题】:Sqlite3 recover runs into out of memory errorSqlite3 恢复遇到内存不足错误
【发布时间】:2022-04-16 00:54:19
【问题描述】:

我正在尝试使用 sqlite3.exe 的恢复功能来恢复损坏的 sqlite 数据库:

sqlite3.exe borken.db ".recover" | sqlite3 fixed.db

损坏的数据库大小为 142 mb。运行命令时,我会在一段时间后收到以下错误:

SQL error: out of memory

是否有针对此问题的已知解决方法?

这个过程似乎不需要太多的价值,所以它似乎不是真正的错误原因。

我还尝试了 x64 版本的 sqlite3.exe,它最多使用大约 6 mb 内存。所以这似乎不是真正的内存问题。

【问题讨论】:

    标签: database sqlite recovery


    【解决方案1】:

    根据您的命令结构,我假设您使用的是 Linux 操作系统。

    如果您首先将数据库文件转储到备份中,则可以使用 rqlite 实用程序。过程如下所示:

    1. 在sqlite中打开数据库文件并运行.output /path/to dump/file.dump

    2. 数据库转储后,安装 rqlite 实用程序here

    3. 安装 rqlite 后,如果您的数据库小于 磁盘上的总大小为 2GB。如果它更大,您需要安装一个 ramdisk 以便 生成的运行数据库可以存储到磁盘而不是缓存在内存中。 命令序列如下所示:

      sudo mount -t tmpfs -o size=3072m tmpfs /mnt/ramdisk # 设置大小小于 磁盘上的可用内存

      ./rqlited -on-disk -on-disk-startup -on-disk-path /mnt/ramdisk/node1/db.sqlite /path/to/data/dir

    我建议在单独的屏幕会话中运行上述内容。然后你可以进入一个单独的实例/会话并运行 rqlite,如下所示:

    ./rqlite
    .restore /path/to/dumped/database/file.dump
    

    关于它的其他优秀文档和示例here

    【讨论】:

      猜你喜欢
      • 2011-10-20
      • 1970-01-01
      • 2014-11-12
      • 2015-09-20
      • 1970-01-01
      • 2012-05-08
      • 2016-02-02
      相关资源
      最近更新 更多