본문 바로가기
MySql

MySQL 오류 1022-쓸 수 없습니다. 테이블의 중복 키

by 베이스 공부 2020. 12. 25.
반응형

테이블 생성 명령에서 중복 키와 관련된 1022 오류가 발생합니다. 쿼리를 살펴본 결과 중복이 발생하는 위치를 이해할 수 없습니다. 다른 사람이 볼 수 있습니까?

SQL query:

-- -----------------------------------------------------
-- Table `apptwo`.`usercircle`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS  `apptwo`.`usercircle` (

 `idUserCircle` MEDIUMINT NOT NULL ,
 `userId` MEDIUMINT NULL ,
 `circleId` MEDIUMINT NULL ,
 `authUser` BINARY NULL ,
 `authOwner` BINARY NULL ,
 `startDate` DATETIME NULL ,
 `endDate` DATETIME NULL ,
PRIMARY KEY (  `idUserCircle` ) ,
INDEX  `iduser_idx` (  `userId` ASC ) ,
INDEX  `idcategory_idx` (  `circleId` ASC ) ,
CONSTRAINT  `iduser` FOREIGN KEY (  `userId` ) REFERENCES  `apptwo`.`user` (
`idUser`
) ON DELETE NO ACTION ON UPDATE NO ACTION ,
CONSTRAINT  `idcategory` FOREIGN KEY (  `circleId` ) REFERENCES  `apptwo`.`circle` (
`idCircle`
) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE = INNODB;

MySQL said: Documentation

#1022 - Can't write; duplicate key in table 'usercircle' 

 

해결 방법

 

데이터베이스에 이름이 iduser 또는 idcategory 인 제약 조건이 이미있을 가능성이 높습니다. 그렇다면 제약 조건의 이름을 바꾸십시오.

제약 조건은 생성 / 변경하는 특정 테이블뿐만 아니라 전체 데이터베이스에 대해 고유해야합니다.

제약 조건이 현재 사용중인 위치를 확인하려면 다음 쿼리를 사용할 수 있습니다.

SELECT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');

 

참조 페이지 https://stackoverflow.com/questions/18056786

 

 

반응형

댓글