我有一个sqlite3数据库。无法删除此数据库中的单个表,错误消息显示为unknown tokenizer: mm
。
我直接使用最新SQLiteSpy v1.9.11中的命令DROP TABLE tablename;
以及.NET代码和官方sqlite NuGet包v 1.0.103。
如何删除令牌器未知的表?
答案 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缓存架构信息,因此您需要关闭并重新打开数据库。