クラウド時代のWebアプリケーション・スマートフォンアプリを開発・運用する会社です。 03-4577-8680 03-6673-4950

SQLite(sqlite3)で “no such table”

2019-11-08

小ネタです。

SQLiteを使っていて “no such table” とエラーが出た場合、

DBファイル名の指定が空になっている、という凡ミスを起こしていないかを確認してみましょう。

・・・

そういう凡ミスをしてしばし悩んだので…

ファイル名の指定が空になっている場合、一時的なインメモリDBとして保存されます(※1)。

つまりDB接続を切断すると中身は消えます。

なので接続時にはエラーが出ず、操作しようとした際にのみエラーが出ます。

※1)
sqlite3のコマンドラインでファイル名を指定せずに実行すると

Connected to a transient in-memory database.

と表示されます(v3.24.0で確認)。そういう仕様なんですね。