在这个神秘的问题出现之前,我的数据库在我的应用程序中运行良好。我想在一个表(listitems)中为两列(list_id和item_id)添加唯一索引。该表记录了与每个列表相关联的项目,并且我不希望列表中存在重复项。
所以我编写了这个从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执行中似乎不存在的原因吗?
答案 0 :(得分:0)
返回http://www.sqlite.org/lang_createindex.html并注意到命令中数据库的名称是可选的。所以我从命令中删除它,因为它真的应该已经知道它将运行哪个数据库。现在它有效。