개발/ETC
[MySQL] GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement
쩨이엠
2023. 5. 16. 10:52
728x90
반응형
1. 에러
JPA를 사용하던 중 ddl-auto를 update로 해놨더니 매번 스프링부트를 올릴 때마다 뭔가가 추가되던 도중
alter table adm_tags
add constraint FKhrr3j1w5xn0ueh0s86u66dbjp
foreign key (adm_faq_id)
references adm_faqs (adm_faq_id)
이 alter 부분에서 밑의 콘솔 내용이 찍히면서 에러가 생겼다
GenerationTarget encountered exception accepting command : Error executing DDL "
alter table adm_tags
add constraint FKhrr3j1w5xn0ueh0s86u66dbjp
foreign key (adm_faq_id)
references adm_faqs (adm_faq_id)" via JDBC Statement
뭐 암튼 DDL 하는 도중 틀렸다는 것 같은데 뭐가 틀렸는지 말을 안해주길래 직접 mysql 콘솔에 쳐봤더니
[HY000][3780] Referencing column 'adm_faq_id' and referenced column 'adm_faq_id' in foreign key constraint 'FKhrr3j1w5xn0ueh0s86u66dbjp' are incompatible.
이런 에러가 나는 것을 확인했다
2. 원인
원인은 adm_faqs에서 참조했던 adm_tags의 adm_faq_id가 unsigned 속성을 가지고 있지 않아 발생한 문제였다
adm_faqs의 adm_faq_id는 Auto-increment에 unsigned속성까지 있어 둘이 데이터 범위가 맞지 않아 발생!
3. 해결
alter table adm_tags modify column adm_faq_id bigint unsigned;
해서 속성을 넣어주면 끝
+ 추가
Unsigned 속성
모든 Integer 타입은 디폴트로 가지고 있는데 이 타입은 컬럼 내에서 음수를 포함하지 않거나, 혹은 수의 range를 양수 쪽으로 더 넓게 가지고 싶을 때 사용한다고 한다
예시 ) -214...~ 214... 의 범위를 0부터 429...로 옮기는 것!
해당 컬럼값이 음수가 될 일이 없을 때 쓰면 좋음 (Auto-increment 등)
728x90
반응형