Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite和FTS表是否存在ICU标记器错误?_Sqlite_Icu_Full Text Search - Fatal编程技术网

Sqlite和FTS表是否存在ICU标记器错误?

Sqlite和FTS表是否存在ICU标记器错误?,sqlite,icu,full-text-search,Sqlite,Icu,Full Text Search,我的sqlite数据库中的FTS表有一个奇怪的问题。我正在创建一个如下表: CREATE VIRTUAL TABLE table01 USING fts4(name, content, tokenize=icu ru_RU); 然后插入两行,一行包含名称和内容,另一行仅包含名称 INSERT INTO table01(name, content) VALUES('Abc1', 'asdasd'); INSERT INTO table01(name) VALUES('Abc2'); 当我试图更

我的sqlite数据库中的FTS表有一个奇怪的问题。我正在创建一个如下表:

CREATE VIRTUAL TABLE table01 USING fts4(name, content, tokenize=icu ru_RU);
然后插入两行,一行包含名称和内容,另一行仅包含名称

INSERT INTO table01(name, content) VALUES('Abc1', 'asdasd');
INSERT INTO table01(name) VALUES('Abc2');
当我试图更新或删除只填充了名称列的行时,我在模块'sqlite3.dll'中的地址7244CF96处遇到了错误访问冲突。读取地址00000000。。其他行都没问题,我可以照常更新或删除。无论我使用什么语言环境,我都试过en_US和许多其他人。fts3和fts4之间没有区别。这看起来像是ICU bug,因为sqlite的内置标记器没有问题。是ICU还是sqlite bug,还是我做错了什么?我已经在SQLite Expert和我的项目中尝试过这个方法,包括所有必需的编译选项和所有库

堆栈框架中的最新版本:

msvcr100d.dll!strlen(unsigned char * buf)  Line 81  Asm
my_prog.exe!icuOpen(sqlite3_tokenizer * pTokenizer, const char * zInput, int nInput, sqlite3_tokenizer_cursor * * ppCursor)  Line 60276 + 0x9 bytes
my_prog.exe!fts3PendingTermsAdd(Fts3Table * p, const char * zText, int iCol, unsigned int * pnWord)  Line 52616 + 0x18 bytes    C
my_prog.exe!fts3DeleteTerms(int * pRC, Fts3Table * p, Mem * * apVal, unsigned int * aSz)  Line 52828 + 0x1a bytes   C

FTS3deleterms正在获取空指针而不是字符串,并将其向下传递。我现在无法一步一步地调试它,我正在使用Mergalion,VS 2010无法调试超过65535行的代码。

地址00000000当然是一个空指针。如果fts4/icu glue试图将null传递给icu标记器,那么至少在fts4/icu glue中听起来像是sqlite3错误。你能在调试模式下构建所有内容并找出谁违反了访问权限吗?

我已经更新了主要帖子。因此,指向strlen的null指针存在一些问题,但不幸的是,我无法找出问题所在,因为我无法调试它。@Anonymous file带有sqlite3的错误-他们不应该将null传递给strlen。