MySQL 인덱스 오류가있는 테이블을 만듭니다
-
19-09-2019 - |
문제
좋아, 그래서 나는 인덱스와 외래 키가있는 MySQL에서 테이블을 만들고있다. MySQL Workbench를 사용하여 테이블을 작성한 다음 엔지니어에게 SQL을 만들 수있게합니다 (SQL 코드를 즉시 작성하는 것보다 시각적 DB 환경에서 더 잘 수행).
문제는 SQL 스크립트를 MySQL로 가져올 때 여러 번, 나는 고전적인 eror를 얻는다.
#1005 - Can't create table 'db.tablename' (errno: 121)
나는 보통 색인/외국 키 관련 문제를 매번 알아낼 수 있었지만 이제는 매번 수정 해야하는 것에 자극을 받기 시작했습니다. 문제가 무엇인지 실제로 이해하지 못합니다 (특히 MySQL 제품이 자체 데이터베이스에 대한 SQL 코드를 생성 할 때). 아래는 일반적으로 문제를 일으키는 일부 코드입니다.
CREATE TABLE IF NOT EXISTS `db`.`groupMembers` (
`groupMembersID` INT NOT NULL AUTO_INCREMENT ,
`groupID` INT NOT NULL ,
`userID` INT NULL ,
PRIMARY KEY (`groupMembersID`) ,
INDEX `group` (`groupID` ASC) ,
INDEX `user` (`userID` ASC) ,
CONSTRAINT `group`
FOREIGN KEY (`groupID` )
REFERENCES `db`.`groups` (`groupsID` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `user`
FOREIGN KEY (`userID` )
REFERENCES `db`.`users` (`usersID` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
오류는 일반적으로 첫 번째 인덱스 정의에서 비롯됩니다. 인덱스 정의를 꺼내더라도 첫 번째 외국 키 제약 조건 정의에서 오류가 발생합니다. 확인했고 외국 키 원격 열과 로컬 열은 동일한 데이터 유형 및 크기입니다.
해결책
"Errno 121은 중복 키 오류를 의미합니다."
제약 조건은 데이터베이스에 고유 한 이름을 가져야하므로 FK 이름을 변경할 수 있습니다. 그렇게 좋아, FK_groupMembers_group
그리고 FK_groupMembers_user
.
제휴하지 않습니다 StackOverflow