article thumbnail image
Published 2022. 11. 19. 22:49

 

 

 

 

1. 현상 & 원인

H2 데이터베이스를 사용해서 User 엔티티를 생성했으나 위 오류 발생.

 

알아보니 예약어를 테이블 명으로 설정했을 때 해당 오류가 발생한다고 한다.

 

User가 예약어라고..?

 

테스트 해보니 mysql 에서는 아무 문제 없이 잘 된다.

 

H2 Database 공식문서를 보자..

참고링크: https://www.h2database.com/html/advanced.html#keywords

 

 

 

있다. 예약어에 User가.

 

2.1.212 버전부터 생겼다고 한다.

 

현재 나는 2.1.214 버전을 사용중이니 예약어와 겹쳐 위 에러가 발생한 것이다.

 

 

2. 해결

두 가지가 있다.

첫 째는 깔끔하게 테이블 이름을 바꿔주는 것 (@Table(name = "Users"))

 

두 번째로는 아래처럼 url에 NON_KEYWORDS 설정을 추가해 주는 방법이 있다.

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/mysecurity;NON_KEYWORDS=USER
    username: sa
    password:
    driver-class-name: org.h2.Driver

 

복사했습니다!