我有一个包含4个字段的表格:_id
,to
,from
,hidden
尝试插入以下值时:
_id=167 from=1311005879000 to=1311005879000 hidden=0
进入我的表格,我得到一个 SQLiteConstraintException ,说明
'column _id is not unique (code 19)'
为了找到导致此问题的原因,我尝试查询表的大小并发现它为0,所以我不知道它来自何处。
也许我没有正确理解错误?
编辑:一些代码!
try {
mDatabase.insertOrThrow("groups", null,
mContentValues);
} catch (SQLException e) {
e.printStackTrace();
}
创建SQL:
CREATE TABLE IF NOT EXISTS groups(_id LONG PRIMARY KEY,hidden INTEGER,from LONG,to LONG
答案 0 :(得分:6)
'column _id不是唯一的(代码19)'
所以你违反了UNIQUE
约束。这是 SQLiteConstraintException 的原因。您的_id
列很可能是主键,主键已隐式分配UNIQUE
约束,表示没有两行可以拥有相同的主键。
您正在尝试插入已在db中的_id
已被分配给PK
的{{1}}。
我尝试查询表的大小,发现它是0,所以我没有 想法来自何处。
我认为您的查询被破坏了,因为您的NULL
说明了所有内容,如果某个地方不是问题则无法抛出。
如果您未被Exception
分配给NULL
,并且您的表中有0条记录,则可能存在问题:
PK
您被分配{Column}的mDatabase.insertOrThrow("groups", null, mContentValues);
作为NULL
方法的第二个参数,您不应该这样做。在SQLite中,每行必须至少指定一列。它需要一个可安全分配给insert()
的列。