この不思議な問題が発生する前は、私のデータベースは私のアプリケーションでうまく機能していました。2つの列(list_idとitem_id)の1つのテーブル(listitems)に一意のインデックスを追加したかったのです。このテーブルは、どのアイテムが各リストに関連付けられているかを追跡しているので、リストに重複がないようにします。
そこで、onUpgrade(...)から呼び出されるこのデータベースアップグレードメソッドを作成しました。
private void upgradeTo3(SQLiteDatabase db) {
db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS '"+
Contract.DATABASE_NAME +"'.list_item_unique_index ON "+
Contract.ListItem.TABLENAME +
" ( "+ Contract.ListItem.LIST +", " + Contract.ListItem.ITEM + ")");
}
そしてそれは私にエラーを与えます"unknown database 'my_database.db'"
上記のSQLと同じ文字列を使用するこのコンストラクターでデータベースヘルパーを取得していますが、ここではエラーはスローされません。そして、私はデータベースにアクセスできます。
public DatabaseHelper(Context context) {
super(context, Contract.DATABASE_NAME, null, Contract.DATABASE_VERSION);
}
また、EclipseでDDMSを開くと、アプリケーションファイル内に「my_database.db」という名前のファイルがあることがわかります。
誰かがデータベースがそのSQL実行に存在しないように見える理由を知っていますか?