2016-11-29 9 views
1

私はsqlite3データベースを持っています。このDB内の単一のテーブルを削除することはできません。エラーメッセージにはunknown tokenizer: mmと表示されます。「unknown tokenizer」で作成されたテーブルを削除しますか?

最新のSQLiteSpy v1.9.11の中のコマンドDROP TABLE tablename;と、.NETコードと公式のsqlite NuGetパッケージv 1.0.103の中で直接試してみました。

トークナイザが不明なテーブルを削除するにはどうすればよいですか?

答えて

2

documentationは言う:

それぞれについて、

は3〜5本当の(非仮想)テーブルは、基礎となるデータを格納するために作成され、データベースの仮想テーブルを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; 

と(非常に危険)を使用PRAGMA writable_schema:だから、そのテーブルを取り除くために

、シャドー・テーブルを削除

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

SQLiteはスキーマ情報をキャッシュするので、データベースを閉じて再度開く必要があります。

関連する問題