문제

좋아, 그래서 나는 인덱스와 외래 키가있는 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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top