공부하는 안경딸기
[MySQL] referencing column 'XXX' and referenced column 'YYY' in foreign key constraint 'ZZZ' are incompatible. 본문
[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도 명시해서 다시 생성해줬다...
'TanTanBody' 카테고리의 다른 글
[MySQL] illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '=' (0) | 2021.10.07 |
---|---|
[Retrofit2] retrofit response 가 null, 0 (0) | 2021.10.04 |
[git] hint: Updates were rejected because the remote contains work that you do (0) | 2021.09.30 |
[Spring Boot] Mapper method ... has an unsupported return type: (0) | 2021.09.29 |
[MyBatis] 헛짓한 썰 풀기 (0) | 2021.09.26 |