2011-07-05 54 views
2

您好我修改了我的SQL語句作爲如何像查詢使用SQLite ICU

CREATE VIRTUAL TABLE [v_fts] USING fts4 
(
[title], 
tokenize=icu 
)" 

但是,當我試圖插入數據我收到錯誤SQL logic error or missing database

編輯

我用icu選項編譯sqlite時使用 - DSQLITE_ENABLE_ICU

選項。

如何加載icu?與Makefile這裏

http://www.2shared.com/file/8hxA3KIn/sqlite.html

我已經上傳的shell代碼

all: release32 

CFLAGS = -fPIC -O6 -DNO_TCL -DSQLITE_THREADSAFE=1 -DHAVE_USLEEP=1 -DSQLITE_ENABLE_FTS3=1 -O3 -Os -I. -DSQLITE_ENABLE_ICU `/home/vivek/downloads/icu/des32/bin/icu-config --cppflags` 

export LDFLAGS += -Wl,--start-group 
export LDFLAGS += /home/vivek/downloads/icu/des32/lib/libsicui18n.a 
export LDFLAGS += /home/vivek/downloads/icu/des32/lib/libsicuuc.a 
export LDFLAGS += /home/vivek/downloads/icu/des32/lib/libsicudata.a 
export LDFLAGS += -lcrypt -ldl -lz -lrt -lssl -lpthread 
export LDFLAGS += -Wl,--end-group 

OBJ=sqlite3.o\ 
    shell.o\ 
    icu.o\ 

release32: $(OBJ) 
    g++34 -fno-exceptions -fno-operator-names ${CFLAGS} -DNDEBUG -m32 -static $(OBJ) $(LDFLAGS) -o s.out 
%.o:%.c 
    gcc34 ${CFLAGS} -DNDEBUG -m32 -c $< 

我的查詢是

CREATE VIRTUAL TABLE [vivek_fts] USING fts4 ([title],tokenize=icu en_US) 
insert into vivek_fts values("a"); 

回答

1

根據the full text search documentation你應該使用tokenize=icu en_US例如(指定ICU區域設置標識符) 。

此外,你應該加載ICU。

+0

你應該加載ICU。 對不起,我沒有得到? 該怎麼辦? –

+0

我添加了我用icu編譯sqlite的後續步驟。現在如何在程序中的sqlite中加載icu?我使用sqlite的icu擴展。 –

+0

如果libicu可用並且可以通過SQLite加載,它應該可以工作。 – Benoit