공부하는 안경딸기

[MySQL] referencing column 'XXX' and referenced column 'YYY' in foreign key constraint 'ZZZ' are incompatible. 본문

TanTanBody

[MySQL] referencing column 'XXX' and referenced column 'YYY' in foreign key constraint 'ZZZ' are incompatible.

안경딸기 2021. 10. 15. 18:53

테이블을 생성하려고 CREATE문을 던지고 추가적으로 외래 키 조건을 추가하기 위해 ALTER 문을 던졌더니 referencing column 'user_email' and referenced column 'user_email' in foreign key constraint 'search_history_fk' are incompatible 이라는 에러를 만났다. (이건 또 뭐야 싶었다)

MYSQL 3780 에러로 원본 테이블의 컬럼 유형이랑 다르다는 내용인데 아무리 봐도 정상이었다.

 

결국 검색!

 

찾은 내용을 보니 해결하는 방법은 번거롭기 때문에 가장 쉽게 해결할 수 있는 방법은 DDL 구문 수행 전 외래 키 제약 조건을 끄고 DDL을 수행한 후 다시 외래 키 제약 조건을 켜는 거라고 한다.

 

SET FOREIGN_KEY_CHECKS=0;

--- DDL 수행

SET FOREIGN_KEY_CHECKS=1;

 

이런식으로 수행하면 문제없이 잘 돌아간다.

역시... 문제가 해결되면 가장 행복한 것 같다.

 

------ 2021년 10월 15일 추가

다시 만나서 이번에는 좀 세세하게 확인해 봤더니 일단 원보 테이블 자료형 타입이 같은 건 맞았다.

근데 이제 이게 뭐가 문제였냐면 A라는 테이블은 만들때 자료형을 명시해준 반면 B라는 테이블은 만들 때 자료형을 명시해주지 않아서 자동적으로 DB의 기본 자료형으로 만들어진 게 문제였다.

DB가 까다롭게 체크를 하다 보니 'A는 명시했는데 B는 명시하지 않아서 다른 타입이야'라고 인식한 것 같다.

결국에는 B도 명시해서 다시 생성해줬다...

Comments