[SQL] SQLite는 오류 빈 테이블에 삽입 할 때의 '열 _id가 고유하지 않습니다'
SQLSQLite는 오류 빈 테이블에 삽입 할 때의 '열 _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.그래서 당신은 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에 할당 안전 할 수있는 하나의 열을 필요로한다.
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
'SQL' 카테고리의 다른 글
[SQL] Mysqli는 2 개의 다른 데이터베이스에서 테이블을 조인 (0) | 2020.07.15 |
---|---|
[SQL] SQL 쿼리 이전 행 최적화 (0) | 2020.07.15 |
[SQL] 날짜 오라클 SQL의 비교는 잘못된 결과를 반환 (0) | 2020.07.15 |
[SQL] LINQ는 (SQL) LIKE 범위 검색을 만들려면 (0) | 2020.07.15 |
[SQL] 어떻게 created_at 및 하이브에서 타임 스탬프 updated_at를 기록하는? (0) | 2020.07.15 |