メモリ内で SQLite データベースを実行しており、次のコマンドでテーブルを削除しようとしています。
DROP TABLE 'testing' ;
しかし、SQLステートメントを実行すると、このエラーが発生します
SQL logic error or missing database
「Drop Table」クエリを実行する前に、このクエリでテーブルがデータベースに存在することを確認します。したがって、テーブルが存在し、データベースに接続していることは確かです。
SELECT count(*) FROM sqlite_master WHERE type='table' and name='testing';
このデータベースはファイル データベースからメモリに読み込まれ、このテーブルを削除しようとすると、データベースがメモリからファイル システムに保存されます。次に、サードパーティの SQLite ユーティリティを使用して SQLite ファイルを表示し、「テスト」が存在するかどうかを確認できます。同じサードパーティの SQLite ユーティリティを使用して、「Drop TABLE」SQL ステートメントをエラーなしで実行できます。
問題なくテーブルを作成/更新できます。
私の質問:
- テーブルを削除するときに、SQLite のメモリ データベースとファイル データベースに違いはありますか?
- SQLite でテーブルをドロップする機能を無効にする方法はありますか?
編集:ロックされたテーブルと関係があるようです。まだまだ調査中。