복붙노트

[SQL] SQLite는 오류 빈 테이블에 삽입 할 때의 '열 _id가 고유하지 않습니다'

SQL

SQLite는 오류 빈 테이블에 삽입 할 때의 '열 _id가 고유하지 않습니다'

나는 4 개 필드와 테이블이 : _id를,에, 숨겨진에서

다음과 같은 값을 삽입하려고하면 :

_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

해결법

  1. ==============================

    1.그래서 당신은 UNIQUE 제약 조건을 위반하고 있습니다. 이 SQLiteConstraintException의 이유입니다. 귀하의 _id 컬럼은 대부분 기본 키 및 기본 키는 암시 적으로 두 개의 행이 동일한 기본 키를 가질 수 말할 UNIQUE 제약 조건을 할당했다.

    그래서 당신은 UNIQUE 제약 조건을 위반하고 있습니다. 이 SQLiteConstraintException의 이유입니다. 귀하의 _id 컬럼은 대부분 기본 키 및 기본 키는 암시 적으로 두 개의 행이 동일한 기본 키를 가질 수 말할 UNIQUE 제약 조건을 할당했다.

    당신은 이미 DB에 있거나 PK를 NULL로 지정되어 duplicit _id를 삽입하려고합니다.

    나는 당신의 예외가 모든 것을 말한다 어딘가에 문제가 아닌 경우가 발생 할 수 없기 때문에 쿼리가 부서졌다 생각합니다.

    당신은 PK에 NULL이 할당되지 않으며 또한 테이블에 0 레코드가 있다면 아마 문제는 여기에 있습니다 :

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

    당신은 삽입 () 메소드의 두 번째 PARAM로 ColumnHack에 NULL을 할당 당신은해야하지. SQLite는, 각 행은 하나 이상의 열이 지정되어 있어야합니다. 그것은 NULL에 할당 안전 할 수있는 하나의 열을 필요로한다.

  2. from https://stackoverflow.com/questions/15731865/sqlite-error-column-id-is-not-unique-on-when-inserting-into-an-empty-table by cc-by-sa and MIT license