Моя база данных хорошо работает для моего приложения перед этой загадочной проблемой. Я хотел добавить уникальный индекс в одну таблицу (listitems) для двух столбцов (list_id и item_id). В таблице отслеживается, какие элементы связаны с каждым списком, и я не хочу, чтобы в списках были дубликаты.Создание уникального индекса сбой для неизвестного исключения базы данных в Android
Так что я написал этот метод обновления базы данных, которая вызывается из 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);
}
Кроме того, если я открываю DDMS в Eclipse, я могу видеть, что есть файл с именем «my_database.db» в файлах приложений.
У кого-то есть идея, почему база данных не существует в этом выполнении SQL?