在Android中,为未知数据库异常创建唯一索引失败

时间:2013-02-11 21:53:43

标签: android android-sqlite

在这个神秘的问题出现之前,我的数据库在我的应用程序中运行良好。我想在一个表(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执行中似乎不存在的原因吗?

1 个答案:

答案 0 :(得分:0)

返回http://www.sqlite.org/lang_createindex.html并注意到命令中数据库的名称是可选的。所以我从命令中删除它,因为它真的应该已经知道它将运行哪个数据库。现在它有效。