2013-02-11 42 views
0

在这个神秘的问题出现之前,我的数据库一直适用于我的应用程序。我想为两列(list_id和item_id)在一个表(listitems)中添加一个唯一索引。该表跟踪哪些项目与每个列表相关联,并且我不希望列表中出现重复项目。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); 
} 

另外,如果我在Eclipse打开DDMS我可以看到,有一个应用程序文件中名为“my_database.db”文件。

有人有一个想法,为什么数据库似乎不存在于该SQL执行?

回答

0

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

相关问题