0

この不思議な問題が発生する前は、私のデータベースは私のアプリケーションでうまく機能していました。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実行に存在しないように見える理由を知っていますか?

4

1 に答える 1

0

http://www.sqlite.org/lang_createindex.htmlに戻って、データベースの名前がコマンドでオプションであることに気付きました。そのため、操作するデータベースをすでに認識している必要があるため、コマンドから削除しました。そして今、それは機能します。

于 2013-02-11T22:05:01.793 に答える