[ERROR][Hibernate] Error executing DDL "drop table if exists user" via JDBC Statement

junghan·2023년 5월 12일
0

SpringBootProject

목록 보기
33/35
post-thumbnail

문제 인식

 WARN 91580 --- [           main] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "drop table if exists user" via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "drop table if exists user" via JDBC Statement
	at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
	at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:419) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]

DDL관련된 에러로 추측하고 디버깅을 통해 흐름을 따라가 보았습니다.

SSO인증 로그인을 시도 -> Security Confing 필터 동작 -> UserService 인터페이스의 구현체 동작 -> userRepository에서 에러발생

userRepository 는 // 소셜 로그인으로 반환되는 값 중 email을 통해 이미 생성된 사용자인지 처음 가입하는 사용자인지 판단하기 위한 메소드가 담겨 있는데 메소드가 호출되기 전, DB에 테이블을 생성할 때 에러가 발생함


문제 해결

User라는 Entity명을 사용했는데 User라는 단어가 예약어라서 발생하던 예외였습니다. 따라서 @Table 주석으로 테이블 이름을 변경하는 방법으로 해결하였습니다.

@Getter
@NoArgsConstructor
@Table(name = "users") <-- 추가
@Entity
public class User extends BaseTimeEntity {

...

}

Hibernage H2 방언 문제 해결

profile
42seoul, blockchain, web 3.0

0개의 댓글