【问题标题】:SQLITE_NOMEM error on Linux 64 bitsLinux 64 位上的 SQLITE_NOMEM 错误
【发布时间】:2014-12-25 11:04:48
【问题描述】:

我正在尝试通过 LabVIEW 在 64 位 linux 上使用 Sqlite3。

我已经使用不同版本的 SQLITE 源成功编译了适用于 linux 64 位 (RHEL6) 的库。

然后我尝试使用一个简单的示例,使用 2 个现有的 LabVIEW SQLITE 包装器调用该库(它们已经分别适用于 win32/64 和 win32/linux32)。

这个简单的示例执行以下操作(并且在 win32/win64/linux32 上运行良好):

  • Open connection
  • DROP TABLE IF EXISTS
  • CREATE TABLE [MyTable] ([Id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [Temperature] FLOAT NOT NULL, [Sensor] TEXT NULL);
  • INSERT INTO MyTable (Sensor, Temperature) VALUES ("%s", "%0.2f");
  • ...

使用 版本 3.8.7(最新) 的 sqlite3 :
使用CREATE TABLE 语句调用 sqlite3_step 时,LabVIEW 崩溃了

使用 版本 3.7.5 的 sqlite3 :
我在同一个函数调用中收到 SQLITE_NOMEM 内存不足错误

我在 2 个 LabVIEW 包装器上得到了相同的行为并检查了它们,所以我不怀疑 LabVIEW 代码

有什么建议吗?

【问题讨论】:

  • 这些是什么包装器?
  • James Powell 博士的 LabVIEW SQLite 库和 SQLite 的 GDataBase - SAPHIR

标签: linux sqlite 64-bit labview


【解决方案1】:

您应该询问包装器的作者他们如何编译 SQLite(即他们使用的定义)。我可以向你保证,这不太可能与 SQLite 本身有关。

我想到的一种可能性是您的程序使用了 db 元数据,但未在编译时定义(定义 SQLITE_ENABLE_COLUMN_METADATA)。

参见此处:http://www.sqlite.org/compile.html

【讨论】:

  • 只有一句话:我意识到我的 Linux distib 上有一个嵌入式版本的 SQLite (v3.6.2)。我用这个库做了简单的测试,我也遇到了LabVIEW的崩溃......所以结果如下:版本3.8.7,SQLITE_THREADSAFE = 1,SQLITE_ENABLE_FTS3,SQLITE_ENABLE_RTREE编译选项(合并源代码的默认选项) :崩溃版本 3.7.5,与上述相同的编译选项:SQLITE_NOMEM 内存不足错误版本 3.6.2,未知编译选项(当然默认):崩溃也使用 SQLITE_ENABLE_COLUMN_METADATA 选项进行了测试,但没有改进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 2012-07-23
  • 2013-05-19
  • 2011-03-11
  • 1970-01-01
相关资源
最近更新 更多