Error

Syntax error in SQL statement "drop table if exists [*]user CASCADE "; expected "identifier"; SQL statement:drop table if exists user CASCADE [42001-214]

luminous13 2022. 9. 20. 23:25

상황

User 엔티티 클래스를 작성하고 실행했더니 아래와 같은 에러가 나타났다.

문장을 읽어보니 user에 별표로 체크가 되있으면서 구문 오류라고 알려준다.

 

잘 모르겠으니 검색을 해보니 h2 데이터베이스에서 'user'라는 키워드가 예약어라서 사용할 수 없다고 한다.

그러면 예약어를 피하기 위해 USER 테이블 명을 바꿔야 하는데 엔티티 클래스명을 바꾸기 보다는 @Table(name="UERS")를 이용하여 테이블 명을 USERS로 바꿨다.

문제

USER라는 키워드는 이미 예약어라서 테이블명으로 사용할 수 없는게 문제다.

해결방안

@Table(name="USERS")를 이용해서 테이블 명을 USERS로 바꿔준다. 

 

 

참고

https://stackoverflow.com/questions/71722483/org-h2-jdbc-jdbcsqlsyntaxerrorexception-syntax-error-in-sql-statement-drop-tab

 

org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "drop table if exists [*]user CASCADE "; expected "identi

I've below data.sql file in my src/main/resources/data.sql file. I would like user tabel to be created from user.csv file. DROP TABLE IF EXISTS `USER` CASCADE; CREATE TABLE `user` AS SELECT * FROM

stackoverflow.com

https://stackoverflow.com/questions/70797504/spring-data-jpa-h2-database-is-returning-ddl-error-during-table-creation