在使用Corona和SQLite时出现“没有这样的模块:fts”错误。

我正在尝试从 corona 应用程序内部对 sqlite 数据库运行“match”查询。我使用 cl.exe 编译了 sqlite 数据库的源文件,当我编译时包含了启用 fts 功能的标志。然后,我使用 fts3(我也尝试过 fts4)创建了数据库中的虚拟表。我能够从 sqlite 命令行实用程序运行“match”查询,并返回正确的结果。

然而,当我尝试在 corona 应用程序中针对相同的数据库文件运行相同的查询时,我会得到错误“无法找到模块:fts3”(当我尝试使用 fts4 时,我得到了“无法找到模块:fts4”)。其他查询(不使用全文搜索)在 corona 中工作得很好。

有谁能告诉我为什么在 corona 应用程序中进行全文搜索时会出现此错误?sqlite 文档暗示这个错误意味着 sqlite 构建不包括 FTS 模块。但我认为我已经正确地编译了它,因为我的 SQL 语句用于创建 FTS3 表(在 corona 之外)成功,且全文查询在 corona 之外也能正常工作。

我需要在 corona 的构建设置中设置一些不同的东西吗?

我正在 Windows 上使用 corona 模拟器,但我也在我的设备上进行了尝试。

这是我从设备的 adb logcat 中获得的输出:

I/Corona  (15353): 运行时错误

I/Corona  (15353): 无法找到模块:fts3

I/Corona  (15353): 堆栈跟踪:

I/Corona  (15353):  [C]: ?

I/Corona  (15353):  [C]: in function 'nrows'

I/Corona  (15353):  ...t\Documents\Corona Projects\aw\scene_search.lua:162: in function 'fillMyTable'

I/Corona  (15353):  ...t\Documents\Corona Projects\aw\scene_search.lua:56: in function <...t\Documents\Corona Projects\aw\scene_search.lua:49>

I/Corona  (15353):  ?: in function <?:218>

点赞
用户2026318
用户2026318

我还在 corona 论坛上发了这个问题,corona 工作人员证实他们在 Android 上使用标准版的 sqlite,并且不包括全文搜索的支持。但在 iOS 上的标准构建版本是支持 fts 的,因此它对 iOS 可用。

参见: http://forums.coronalabs.com/topic/55683-is-coronas-sqlite-compiled-with-fts3-full-text-search-enabled/

2015-03-24 18:48:36