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