删除最初使用'未知标记符'?创建的表格

时间:2016-11-29 22:37:56

标签: sqlite tokenize fts4

我有一个sqlite3数据库。无法删除此数据库中的单个表,错误消息显示为unknown tokenizer: mm

我直接使用最新SQLiteSpy v1.9.11中的命令DROP TABLE tablename;以及.NET代码和官方sqlite NuGet包v 1.0.103。

如何删除令牌器未知的表?

1 个答案:

答案 0 :(得分:2)

Read Gradle's configuration guide说:

  

对于数据库中的每个FTS虚拟表,创建三到五个真实(非虚拟)表来存储基础数据。这些真实的表被称为"影子表"。真实的表名为"%_ content","%_ segdir","%_ segments","%_ stat"," %_docsize",其中"%"被FTS虚拟表的名称替换。

因此,要删除该表,请删除影子表:

DROP TABLE tablename_content;
DROP TABLE tablename_segdir;
DROP TABLE tablename_segments;
DROP TABLE tablename_stat;
DROP TABLE tablename_docsize;

然后使用(非常危险的)Read about Java's heap size从系统表中删除有关此表的其余信息:

PRAGMA writable_schema = ON;
DELETE FROM sqlite_master WHERE type = 'table' AND name = 'tablename';

SQLite缓存架构信息,因此您需要关闭并重新打开数据库。