쩨이엠 개발 블로그

[MySQL] GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement 본문

개발/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
반응형
Comments