기타/오류

[Problem] MySQL 에러 Duplicate foreign key constraint name

배발자 2022. 12. 28.
반응형

CREATE TABLE `test`.`adminstrate` (
  `aid` INT NOT NULL AUTO_INCREMENT,
  `pid` INT NULL,
  `sid` INT NULL,
  PRIMARY KEY (`aid`),
  INDEX `pid_idx` (`pid` ASC) VISIBLE,
  INDEX `sid_idx` (`sid` ASC) VISIBLE,
  CONSTRAINT `pid`
    FOREIGN KEY (`pid`)
    REFERENCES `test`.`pro` (`pid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `sid`
    FOREIGN KEY (`sid`)
    REFERENCES `test`.`student` (`sid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

 

ERROR 1826: Duplicate foreign key constraint name 'sid'

중복된 외래키 라고 적혀있는데 외래키 설정페이지에서 외래키 키 네임을 다르게 설정해줘야한다. 

 

 

기존 외래키 설정 페이지
이후 외래키 설정

 

예전 프로젝트 때 "fk_테이블명a_테이블명b" 으로 지정했던 것이 기억이 난다.

의미는 a테이블에 b테이블의 PK 컬럼을 외래키로 가지고 있다라는 뜻. 

 

업로드한 사진에서는 fk 이름이 겹치지않게만 설정해주고 돌렸다. 

 

 

CREATE TABLE `test`.`adminstrate` (
  `aid` INT NOT NULL AUTO_INCREMENT,
  `pid` INT NULL,
  `sid` INT NULL,
  PRIMARY KEY (`aid`),
  INDEX `pid_idx` (`pid` ASC) VISIBLE,
  INDEX `sid_idx` (`sid` ASC) VISIBLE,
  
  // 제약 네임 변경 됨. 
  CONSTRAINT `pid_fk`
  
    FOREIGN KEY (`pid`)
    REFERENCES `test`.`pro` (`pid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  
  // 제약 네임 변경 됨. 
  CONSTRAINT `sid_fk`
  
    FOREIGN KEY (`sid`)
    REFERENCES `test`.`student` (`sid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

 

정상적으로 테이블 생성된다. 

반응형

댓글