2

我有一个有 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
4

1 回答 1

6

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

所以你违反了UNIQUE约束。这是SQLiteConstraintException的原因。您的_id列很可能是主键,并且主键隐式分配UNIQUE了约束,即没有两行可以具有相同的主键。

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

我尝试查询表的大小,发现它是 0,所以我不知道这是从哪里来的。

我认为你的查询被破坏了,因为你Exception说了一切,如果某个地方没有问题,它就不能被抛出。

更新:

如果您没有被分配NULLPK并且您的表也有 0 条记录,那么问题可能就在这里:

mDatabase.insertOrThrow("groups", null, mContentValues);

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

于 2013-03-31T16:56:00.037 回答