본문 바로가기

트러블슈팅

JPA로 엔터티의 테이블 CREATE 시, expected "identifier" 에러

문제

JPA의 ddl-auto 속성을 create로 두어, 스프링 부트 시작 시, 메모리 임베디드 DB인 H2 Database에 Entity의 테이블을 자동 생성하고자 했다. H2 Database의 SQL 문법을 MySQL로 설정하기 위하여, properties.hibernate.dialect를 org.hibernate.dialect.MySQL5InnoDBDialect 로 설정해주었다.

 

 

그런데, 부팅하려고 하니 DDL관련 아래와 같은 에러가 발생하였다.

 

SQL Syntax 에러라서 확인을 위해  SQL 구문을 h2-console에서 실행켰다. 그럤더니 잘 실행된다.

검색에서는  expected "identifier" 를 찾아보니, 예약어를 사용하는 경우 발생한다고 한다.

하지만, 예약어가 될 만한 것도 없는 데 SQL Syntax 에러가 났다.

문제 해결

문제 원인은 내가 MySQL을 SQL 문법으로 설정해놓고, datasource의 url에 MODE를 MYSQL이라고 적어주지 않아서 생긴 것이었다. Mode=MYSQL을 추가해주니, 에러 없이 H2 데이터베이스에 테이블이 생성되었다.