0

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

4

1 回答 1

0

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

于 2013-02-11T22:05:01.793 回答