programing

빈 테이블 'Primary' 키에 대해 '1' 항목이 중복됩니다.

bestcode 2022. 9. 8. 22:18
반응형

빈 테이블 'Primary' 키에 대해 '1' 항목이 중복됩니다.

MariaDB 데이터베이스에 이상한 문제가 있습니다.다음 코드로 빈 테이블을 만듭니다.

drop table if exists Subject;
CREATE TABLE Subject (
  id integer primary key auto_increment,
  code varchar(100) unique not null,
  name text not null
);

쿼리가 정상적으로 실행되어 영향을 받는 행은 0개입니다.

테이블에 데이터를 삽입하려고 합니다.

INSERT INTO Subject (id, code, name) VALUES
(0,'KMI/AIdb/PHW/15','Počítačový hardvér'),
(1,'KMI/AIdb/DBA/15','Tvorba databázových aplikácií'),
(2,'KMI/SPRVdb/INF/16','Informatika a základy správy databáz'),
(3,'KMI/AIdb/PR4/15','Programovanie 4 - Objektové programovanie'),
(4,'KMI/AIdb/DBS/15','Databázové informačné systémy');

쿼리 오류(1062):'Primary' 키에 대해 '1' 항목이 중복됩니다.

동일한 쿼리를 한 번 더 실행하는 경우:

INSERT INTO Subject (id, code, name) VALUES
(0,'KMI/AIdb/PHW/15','Počítačový hardvér'),
(1,'KMI/AIdb/DBA/15','Tvorba databázových aplikácií'),
(2,'KMI/SPRVdb/INF/16','Informatika a základy správy databáz'),
(3,'KMI/AIdb/PR4/15','Programovanie 4 - Objektové programovanie'),
(4,'KMI/AIdb/DBS/15','Databázové informačné systémy');

쿼리가 정상적으로 실행되어 5개의 행이 영향을 받습니다.

auto_increment와 관련이 있다고 생각합니다만, 삽입하고 싶은 데이터베이스 덤프가 매우 큽니다.이것은 버그입니까, 아니면 예상되는 동작입니까?

첫 번째 삽입으로 id=1이 생성되었습니다.이는 "0" (또는NULL)는 특별히 "다음 ID를 주세요"라는 의미로 취급됩니다.그런 다음 두 번째 행이 id=1을 명시적으로 삽입하려고 시도했고 "syslog"를 받았습니다.

코멘트에서 암시하는 것처럼 덤프에 id=0 행이 포함되었습니까?그건 잘못된 것 같아요.

ID 자동 증가 사용 ID 삽입 안 함

INSERT INTO Subject (code, name) VALUES
('KMI/AIdb/PHW/15','Počítačový hardvér'),
('KMI/AIdb/DBA/15','Tvorba databázových aplikácií'),
('KMI/SPRVdb/INF/16','Informatika a základy správy databáz'),
('KMI/AIdb/PR4/15','Programovanie 4 - Objektové programovanie'),
('KMI/AIdb/DBS/15','Databázové informačné systémy');

전체적으로 ID에 0을 삽입하지 않음

AUTO_INCREMENT Atribut을 사용하여 새 행의 고유 ID를 생성할 수 있습니다.

NO_AUTO_VALUE_ON_ZERO SQL 모드가 네이블이 아닌 한 열에 0을 명시적으로 할당하여 시퀀스 번호를 생성할 수도 있습니다.

자세한 내용은 여기를 참조하십시오.

언급URL : https://stackoverflow.com/questions/55557668/empty-table-duplicate-entry-1-for-key-primary

반응형