2014-10-29 123 views
0

我想在LabVIEW上使用64位Linux上的Sqlite3。
Linux 64位上的SQLITE_NOMEM错误

我已经成功编译了Linux 64位(RHEL6)的库,其中包含不同版本的SQLITE源。

然后我试着用2个现有的SQLITE包装器为LabVIEW调用这个库(它们已经分别用于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时版本3.7.5的sqlite3的,我得到的LabVIEW的崩溃:
我得到SQLITE_NOMEM内存不足的错误在同一个函数调用

我得到了2个LabVIEW的包装相同beaviour并检查他们,所以我不怀疑LabVIEW代码

任何建议?

+0

这些包装是什么? – 2014-10-29 18:15:42

+0

由James Powell博士和SQLite的GDataBase开发的用于LabVIEW的SQLite库 - SAPHIR – SaphirCES 2014-10-30 07:54:59

回答

0

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

我的一个可能性是你的程序使用了db元数据,但是没有在编译时定义(定义SQLITE_ENABLE_COLUMN_METADATA)。

另请参阅:http://www.sqlite.org/compile.html

+0

只有一句话:我意识到在我的distib Linux上有一个SQLite嵌入式版本(v3.6.2)。 我做了这个库中的简单的测试,我也得到LabVIEW中的崩溃...... 所以结果如下:3.8.7 版本,SQLITE_THREADSAFE = 1,SQLITE_ENABLE_FTS3,SQLITE_ENABLE_RTREE编译选项(默认选项与amalgation源代码):崩溃3.7.5版本 ,相同的编译选项如上:SQLITE_NOMEM内存不足的错误 版本3.6.2,未知的编译选项(当然默认):崩溃 也没有用SQLITE_ENABLE_COLUMN_METADATA选项,但测试没有改进。 – SaphirCES 2014-11-03 12:24:08