【问题标题】:"sqlite3.OperationalError: database or disk is full" on LustreLustre 上的“sqlite3.OperationalError:数据库或磁盘已满”
【发布时间】:2021-08-25 13:40:53
【问题描述】:

我的应用程序日志中有这个错误:

sqlite3.OperationalError: database or disk is full

由于有足够的磁盘空间可用并且我的 SQLite 数据库似乎没有损坏(integrity_check 没有报告任何错误),为什么会发生这种情况以及如何调试它?

我正在使用 Lustre 文件系统(设置了flock),到目前为止,它运行良好。

版本是:

  • Python 2.6.6
  • SQLite 3.3.6

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    对于原始海报来说可能为时已晚,但我刚刚遇到这个问题并且找不到答案,所以我将记录我的发现,希望它可以帮助其他人:

    事实证明,即使有足够的磁盘空间,SQLite 数据库实际上可以填满,因为它对数据库中的 页数有限制文件:

    http://www.sqlite.org/pragma.html#pragma_max_page_count

    在我的例子中,该值为 1073741823,这意味着结合 1024 字节的页面大小,数据库最大为 1 TB 并返回“database or disk is full”错误。

    好消息是您可以提高限额;例如,通过发出PRAGMA max_page_count = 2147483646; 将其翻倍。

    不过,这个限制似乎没有保存在数据库文件中,所以每次打开数据库时都必须在应用程序中运行它。

    【讨论】:

    • 您好,请问如何在windows中执行命令?
    【解决方案2】:

    默认情况下,SQLite 使用/tmp 临时目录(不是内存)。如果/tmp 太小,您将得到disk full。在这种情况下,像这样更改临时目录: export TMPDIR=<big file system>

    【讨论】:

      【解决方案3】:

      我也有同样的问题。 您的主机或 PC 的存储空间已满,因此请删除系统中的一些文件,然后问题就消失了。

      【讨论】:

        猜你喜欢
        • 2014-06-08
        • 2011-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-05
        • 1970-01-01
        相关资源
        最近更新 更多