SQLiteでno such columnが出た
Androidアプリ開発でSQLiteを扱っていてno such columnというエラーが出た。
今回は、Androidアプリ外(sqliteBrowserなど)で作成したデータベース(hoge.db)をassetsにコピーして読み込み、活用しているパターンです。
発生したタイミング
- データベースの内容を更新し、assets内にある古いデータベースから新しいデータベースに入れ替えた。
- 中身だけ更新しているのでデータベース名は一緒。
- エミュレータで実行。
- 「おめーの定義したcolumnねぇから!!」
原因
- 通常デバッグするときは、エミュレータ内に既にインストールされている開発中のアプリにさらに上書きする形だが、データベース自体は上書きされていないことがある。
- 名前が一緒だと更新されないで再利用される?
- ということなので、更新して新しいSQL文に書き換えても古いデータベースを参照し「存在しないカラムがある」というエラーが出た。
解決方法
実は、no such columnエラーは二度目で、ずっとSQL文とにらめっこしていた。