Lustre上的“sqlite3.OperationalError:数据库或磁盘已满”

时间:2013-05-22 06:37:19

标签: sqlite

我的应用程序日志中出现此错误:

sqlite3.OperationalError: database or disk is full

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

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

版本是:

  • Python 2.6.6
  • SQLite 3.3.6

2 个答案:

答案 0 :(得分:5)

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

事实证明,即使有足够的磁盘空间,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;来加倍。

但是,限制似乎没有保存在数据库文件中,因此每次打开数据库时都必须在应用程序中运行它。

答案 1 :(得分:0)

我也有同样的问题。 您的主机或 PC 的存储空间已满,删除系统中的一些文件即可解决问题。