我用Visual C++ 2008在Windows 7上编译SQLite
在“sqlite3.c”文件中启用FTS4,如下所示

#ifndef SQLITE_ENABLE_FTS3
#define SQLITE_ENABLE_FTS3
#define SQLITE_ENABLE_FTS4
#define SQLITE_ENABLE_FTS3_PARENTHESIS
#endif

调试版本工作正常,但发布版本失败,并出现错误
试图创建表时“没有此类模块FTS3”
CREATE VIRTUAL TABLE DOCS USING FTS3(DOC_NAME, DOC)

怎么回事?

最佳答案

http://www.sqlite.org/fts3.html
第二节。编译和启用FTS3和FTS4
如果使用基于合并autoconf的生成系统,则在运行“configure”脚本时设置CPPFLAGS环境变量是设置这些宏的简单方法。例如,以下命令:
CPPFLAGS="-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS" ./configure <configure options>
通常传递给配置脚本的选项(如果有的话)在哪里。
因为FTS3和FTS4是虚拟表,所以SQLITE_ENABLE_FTS3 compile time选项与SQLITE_OMIT_VIRTUALTABLE选项不兼容。
如果SQLite的构建不包括FTS模块,那么任何准备SQL语句以创建FTS3或FTS4表或以任何方式删除或访问现有FTS表的任何尝试都将失败。返回的错误消息类似于“no such module:ftsN”(其中N是3或4)。
如果ICU库的C版本可用,那么FTS也可以使用SQLITE_ENABLE_ICU pre-processor宏进行编译。使用此宏进行编译可以启用FTS标记器,该标记器使用ICU库,使用指定语言和区域设置的约定将文档拆分为术语(单词)。
-DSQLITE_ENABLE_ICU

07-24 09:44