[Spring - 오류] 예약어 이름으로 테이블을 생성하면 일어나는 일
2023. 12. 31. 23:48ㆍSpring
나에게서 나타난 오류 메세지들
GenerationTarget encountered exception accepting command : Error executing DDL
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USERS" not found; SQL statement:
alter table if exists product_registration
add constraint FK6e8dj5flvq0cxn9dirrdko4my
foreign key (user_id)
references [42102-224]
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "
alter table if exists product_registration
add constraint FKe5mm9gb9coi9lm02l108h34er
foreign key (user_id)
해당 메세지들의 키워드를 보면 DDL 에러, USERS 테이블을 생성 오류, user_id 를 찾을 수 없다. 이런 메세지들을 확인 할 수 있다.
이유는 예약어가 테이블 이름에 포함되어있어 해당 테이블과 연관된 Users 테이블이 생성되지 못해 해당 테이블과 매핑된 다른 테이블도 생성하지 못하는 오류가 발생한 것이다.
오류 확인 수행 단계
- 여기서 처음 내가 생각한 것은 fk 를 인식하지 못하니 내가 테이블 컬럼 혹은 매핑에 오타를 냈는지 확인.
- 테이블 이름을 확인했다. 이 중 테이블 예약어 문제 확인.
오류 원인
해당 오류는 데이터베이스에서 사용하는 예약어를 클래스 이름으로 사용했다. 처음에는 User -> Users로 지키고 다른 부분은 걸리는게 없다 생각해 넘어갔는데 Users의 enum 으로 할당된 클래스에 Authorization 을 사용해 버렸다. 처음에는 이게 기본적으로 사용되는 예약어라고 생각도 못하고 있어서 엄한 Users 테이블에서 찾게 되었다.
오류 해결 방법
1. 데이터베이스 예약어 문서 확인
https://dev.mysql.com/doc/refman/8.0/en/keywords.html
2. 테이블 이름 변경
나는 Authorization -> Role로 이름을 변경해줘서 해결해주었다.
'Spring' 카테고리의 다른 글
[Spring] SSR, CSR HTTP API 이용한 렌더링 방식의 차이점 (0) | 2024.01.31 |
---|---|
[Spring] 양방향 매핑으로 인한 순환 참조 (0) | 2024.01.15 |
[Spring - JAVA] 의존성 주입 관계 (0) | 2023.10.21 |
[OOP] SOLID 5대 원칙 SRP 단일 책임 원칙 (0) | 2023.10.20 |
[Spring - JAVA] JVM이란 (0) | 2023.10.14 |