>데이터 베이스 >MySQL 튜토리얼 >MySQL 테이블을 생성할 때 중복 키 오류가 발생하는 이유는 무엇입니까?

MySQL 테이블을 생성할 때 중복 키 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-29 02:14:08480검색

Why Am I Getting a Duplicate Key Error When Creating a MySQL Table?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.