H2를 사용할 수 없거나, 테이블이 만들어지지 않는다면

2022. 8. 30. 15:16카테고리 없음

이번에 프로젝트를 시작하면서 아직 어떤 DB를 사용할 지 정해지지 않아 우선 H2를 사용하기로 했습니다.

이 과정에서 발생한 두 가지 문제를 어떻게 해결했는지 적어보겠습니다.


첫 번째 문제는 Spring Boot가 H2를 사용할 수 없는 문제입니다.

이 문제가 발생하는 원인은 H2를 실행하지 않았거나, H2가 이미 사용 중일 때 발생했습니다.

(혹은 설치되어 있는 H2의 버전과 Spring Boot에서 설치한 의존성의 버전이 다를 경우 발생될 수 있습니다.)

전자라면 H2를 키면 됩니다. 반면 후자의 경우 두 가지 방법이 있습니다.

첫 번째 방법은 실행 중인 DB를 끄는 것입니다.

우측 하단의 이 아이콘을 끄고 다시 H2를 실행시킨 후 콘솔에 로그인하지 않으면 됩니다.


두 번째 방법은 H2의 연결 방식에 관한 문제입니다.

H2 연결 방식이 파일을 통한 Embeded 방식과 Tcp를 통한 Server 방식이 있는데 같은 방식으로 콘솔과 프로젝트에서 접근했기 때문입니다.

이런 식으로 두 방식을 다르게 가져가면 동시에 접근할 수 있습니다.

두 번째 문제는 H2 2.x 버전에서 발생하는 문제입니다.

위와 같이 테이블을 생성할 수 없다는 에러가 나오고 있습니다.

테이블명이 user로 생성이 되는데 이 user가 H2 2.x 버전의 예약어가 되었기 때문에 발생한 에러입니다.

이 에러는 테이블명을 변경하거나 다음과 같이 NON_KEYWORDS=USER 를 붙히면 해결됩니다.


참고 자료

https://to-moneyking.tistory.com/53
https://icthuman.tistory.com/entry/Spring-JPA-H2-사용시-GenerationTypeIDENTITY-오류