小ネタです。 SQLiteを使っていて "no such table" とエラーが出た場合、 DBファイル名の指定が空になっている、という凡ミスを起こしていないかを確認してみましょう。 ・・・ そういう凡ミスをしてしばし悩んだので… ファイル名の指定が空になっている場合、一時的なインメモリDBとして保存されます(※1)。 つまりDB接続を切断すると中身は消えます。 なので接続時にはエラーが出ず、操作しようとした際にのみエラーが出ます。 ※1) sqlite3のコマンドラインでファイル名を指定せずに実行すると
Connected to a transient in-memory database.
と表示されます(v3.24.0で確認)。そういう仕様なんですね。