
이전 오류 해결에 이어 오늘은 해당 오류를 해결해보도록 하자. 결과부터 말하면 이래도 intTest가 돌아가진 않았다😥
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "
alter table subscribe
add constraint FKgnxvys06tns02nbr5bxj1xxh8
foreign key (user_id)
references users (id)" via JDBC [Table "USERS" not found;]
에러 메시지에서 말해주듯 users 테이블이 존재하지 않는다고 나와있는데 show-sql를 통해 확인해본 결과 정말로 users를 제외한 나머지 테이블만 생성이 되는 것을 확인할 수 있었다.
이제 원인을 알았으니 해결방법을 알아보도록 하자.
내가 찾은 해결방법은 2가지다.
ddl auto가 update상태여서 users 테이블이 생성안되는 것이였다. create와 create drop을 하니 정상적으로 Users 테이블이 생성되는 것을 확인했다. (테스트는 무조건 create-drop으로)
개인적으로 테스트DB에 아무것도 저장이 안된 상태임에도 Update로 Users 테이블만 제외하고 create한다는게 아직도 이해가 잘안된다...
ddl auto를 사용할 때 주의사항으로 sql 예약어를 사용하는것은 지양해야한다.
H2공식문서에서도 예약어로 user가 존재하기 때문에

이렇듯 예약어를 피하기 위해 table명을 users로 변경했으나 그래도 생성이 안되고 있었다.
@Table(name = "\"users\"")
그럴 경우 큰따옴표를 붙여주도록 하자. 그러면 예약어 상관없이 테이블명으로 인식해서 제대로 테이블이 생성되는 것을 확인할 수 있었다.
Spring Data JPA를 사용할 때 필드 이름이 데이터베이스의 예약어와 같아서 문법 오류가 발생한다면?