插入空表时SQLite错误'column _id不唯一'

saa*_*az1 2 sql sqlite android

我有一个表4个字段:_id,to,from,hidden

在尝试插入以下值时:

_id=167 from=1311005879000 to=1311005879000 hidden=0
Run Code Online (Sandbox Code Playgroud)

在我的表中,我得到了一个SQLiteConstraintException,说明了这一点

'column _id is not unique (code 19)'
Run Code Online (Sandbox Code Playgroud)

为了找到导致此问题的原因,我尝试查询表的大小并发现它为0,所以我不知道它来自何处.

也许我没有正确理解错误?

编辑:一些代码!

try {
    mDatabase.insertOrThrow("groups", null,
            mContentValues);
} catch (SQLException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

创建SQL:

CREATE TABLE IF NOT EXISTS groups(_id LONG PRIMARY KEY,hidden INTEGER,from LONG,to LONG
Run Code Online (Sandbox Code Playgroud)

Sim*_*iak 6

'column _id不是唯一的(代码19)'

所以你违反了UNIQUE约束条件.这是SQLiteConstraintException的原因.您的_id列很可能是主键,主键具有隐式分配的UNIQUE约束,表示没有两行可以具有相同的主键.

您正在尝试插入_id已在db中或PK已分配给的duplicit NULL.

我试着查询表的大小,发现它是0,所以我不知道它来自哪里.

我认为你的查询被破坏了,因为你Exception说了所有内容,如果某个地方不是问题就不能抛出它.

更新:

如果您没有被分配NULL,PK并且您的表有0条记录可能问题在这里:

mDatabase.insertOrThrow("groups", null, mContentValues);
Run Code Online (Sandbox Code Playgroud)

您被分配NULL给ColumnHack作为insert()您不应该的第二个方法参数.在SQLite中,每行必须至少指定一列.它需要一个可以安全分配的列NULL.