좋아, 그래서 색인 및 외래 키로 MySQL에 테이블을 만들고 있습니다. MySQL Workbench를 사용하여 테이블을 만든 다음 SQL 작성 스크립트를 전달 엔지니어에게 전달합니다 (필자는 SQL 코드를 직접 손으로 작성하는 것보다 시각적 인 DB 환경에서 더 효과적입니다). 나는 때마다, 일반적으로 인덱스/외래 키 관계를 문제를 알아 내기 위해 관리했습니다MySQL 인덱스 만들기 오류 테이블
#1005 - Can't create table 'db.tablename' (errno: 121)
: 나는 MySQL의에 SQL 스크립트를 가져올 때
문제는 여러 번, 나는 고전 eror를 얻을 수 하지만 지금은 매번 그것을 고쳐야하는 것에 짜증이 나기 시작합니다. 나는 정말로 문제가 무엇인지 이해하지 못한다. (특히 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;
오류는 일반적으로 첫 번째 인덱스 정의에서 온다 - 나는 인덱스 정의를 꺼낼 경우에도, 난 그냥 처음 외부 키 제한 조건 정의에 오류가 발생합니다. 내가 확인한 외래 키 원격 열과 로컬 열은 동일한 데이터 형식 및 크기입니다.
감사합니다. - 모든 외래 키와 색인 이름을 변경했으며 오류를 수정했습니다. 이것은 인덱스 이름에도 적용됩니까? 아니면 테이블 전용입니까? –
예, 모든 엔티티 (색인, 테이블 등)는 데이터베이스 전체에서 고유해야합니다. – Fabian