完整性检查时的 sqlite nomem 错误

Posted

技术标签:

【中文标题】完整性检查时的 sqlite nomem 错误【英文标题】:sqlite nomem error on integrity check 【发布时间】:2013-08-06 07:15:56 【问题描述】:

我有一个嵌入式系统,它使用 C/C++ api 和 SQLite v3 的编译版本。我在pragma integrity_check(10); 上收到SQLITE_NOMEM 错误。我问底层系统程序员应用程序堆大小是多少,他告诉我值是 500k。还有一个 SQL 向量大小为 4096。

我有什么办法可以摆脱这种情况?除了将数据库拆分为多个?

【问题讨论】:

pragma integrity_check 是一个管理功能,不应在正常操作期间运行。 (当检查失败时你该怎么办?) 我正在恢复损坏数据库上的备份文件。现在它发生了,即使它是一个 NOMEM 错误。我想解决这个问题。 在测试数据库上尝试编译指示。使用 sqlite3 命令。从那里开始寻找导致失败的具体原因。 (SQLite 环境可能以某种方式搞砸了。) 它会自动对 4 个数据库进行完整性检查,并且只在较大的数据库上给出 NOMEM 错误。我要求增加应用程序堆的大小。明天就会清楚是不是因为它。 【参考方案1】:

将堆内存大小增加到 1.5M 解决了这个问题。

【讨论】:

以上是关于完整性检查时的 sqlite nomem 错误的主要内容,如果未能解决你的问题,请参考以下文章

带有光标的sqlite3执行完整性错误

SQLite CREATE TRIGGER ... SQLite 错误 1 ​​与语句:不完整的输入

修复使用 Python 和 sql 时的完整性错误?

提交时的完整性错误

坚持时的教义关联完整性约束

自动提交设置为 false 时的完整性约束