집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 테이블을 생성할 때 중복 키 오류가 발생하는 이유는 무엇입니까?
CREATE TABLE 명령 중 중복 키 오류
Q1. 오류 1022: 쓸 수 없습니다. 테이블에 중복 키
중복 키로 인해 CREATE TABLE 명령을 실행할 때 오류 1022가 발생합니다. 쿼리를 검토해 보았으나 원인을 알 수 없습니다.
쿼리:
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;
Q2. 중복이 어디서 발생하나요?
A1. 제약 조건 이름 충돌
이 오류는 제약 조건 이름이 중복되어 발생했을 가능성이 높습니다. 제약 조건은 특정 테이블 내뿐만 아니라 데이터베이스 전체에서 고유해야 합니다.
이 경우 데이터베이스에 iduser 및/또는 idcategory라는 제약 조건이 이미 있는 것으로 보입니다. 이러한 제약 조건의 이름을 바꾸면 문제가 해결됩니다.
Q3. 기존 제약사항을 어떻게 식별할 수 있나요?
A2. 제약 조건 찾기 쿼리
현재 제약 조건이 사용되는 위치를 확인하려면 다음 쿼리를 실행합니다.
SELECT `TABLE_SCHEMA`, `TABLE_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');
이 쿼리는 제약 조건이 적용된 스키마 및 테이블 이름을 반환합니다. .
위 내용은 MySQL 테이블을 생성할 때 중복 키 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!