상세 컨텐츠

본문 제목

[H2] Database (디렉토리 경로) not found, either pre-create it or allow remote database creation

Log.Develop/DB

by bluayer 2020. 4. 23. 15:57

본문

서론

H2 DB를 처음 사용할 때 맞이할 수 있는 문제다.

필자는 개인적으로 Spring boot를 사용할 때 테스트 용 디비로 H2를 사용하고 있었는데,

최근에 컴퓨터에서 직접 DB 조작할 일이 생겨 깔아서 사용하던 중 맞이한 문제다.

 

개발 환경

필자의 개발 환경은 다음과 같다.

OS : macOS Catalina

Device : Macbook pro early 2015

H2 version : 1.4.200

 

문제가 무엇인가?

Database (디렉토리 경로) not found, either pre-create it or allow remote database creation(not recommended in secure environments)

 

맞이한 문제가 위와 같다면, 본 포스트를 읽는 것이 도움이 될 것이라 확신한다.

위의 문제는 Database가 없어서 h2에서 읽어올 수 없으며 접근할 수 없다는 뜻인데,

따라서 database에 접속하기 전에 미리 생성하거나 remote db creation을 허용해 줘야 한다는 뜻이다.

보통 미리 생성하는 방법을 택하는 것이 일반적이다.

즉, 방법은 2가지가 있게 된다.

 

1. 모종의 방법을 통해 h2에서 미리 생성한다.

2. 직접 database 파일을 생성한다.

 

둘 다 좋은 방법이라고 할 수 있지만, 빨리 DB를 조작하고 싶은 우리에게는 1번이 적합하다.

빠르게 1번 방법으로 해보자.

 

해결 방법

먼저 콘솔에 접속했는가?

잘 접근이 안된다면, localhost:8082를 URL에 입력하면 된다.

 

기본적인 h2 콘솔

 

기본적인 h2 콘솔의 형태는 다음과 같이 되어 있을 것이다.

참고로 설정 : Generic H2 (Server)로 한 상태이다. (어차피 DB 서버로 쓰는 경우가 대다수이니깐)

 

아무쪼록, 위에서 설명한 것처럼 데이터베이스 파일을 생성해야 하는데,

생성 방법은 아주아주 쉽다.

드라이버 클래스 밑의 JDBC URL이 보이는가?

거기에 다음과 같이 입력해 준다.

 

jdbc:h2:~/test

 

그런 다음 연결 버튼을 누른다.(중요한 것은 연결 시험 버튼을 누르지 않는 것이다!!)

콘솔에 잘 접속이 되었다면 test라는 이름으로 디비가 잘 생성이 되었음을 의미한다.

특히 하단의 빨간 메시지로 우리의 에러가 나타나지 않았다면 성공이다.

 

그 다음은 원래 하려고 헀던 것처럼 다시 나와서, JDBC URL에 

 

jdbc:h2:tcp://localhost/~/test

 

입력한 후 접속해주면 되겠다.

 

그런데, 가끔

이렇게 해도 잘 안 될 때가 있다.

혹시 이렇게 했는지 확인해보길 바란다.

1. h2 콘솔을 켜고

2. jdbc:h2:tcp://localhost/~/test에 연결을 시도했다가 에러가 떠서

3. jdbc:h2:~/test에 연결하여 DB파일을 생성하고자 한다.

만약 이와 같은 경로로 진행했다면, 위와 같은 에러가 반복적으로 나타나기만 할 것이다.

 

이를 해결할 수 있는 방법은

1. h2 콘솔을 켜고

2. jdbc:h2:~/test를 입력한 후 연결 버튼을 눌러 DB 파일을 생성하여 연결한다.

 

아마 이미 에러를 띄우고 난 후에는 잘 되지 않는 상황도 있는 것으로 보인다.

따라서, 바로 디비 생성을 하는 것을 추천한다.

'Log.Develop > DB' 카테고리의 다른 글

[MySQL] How to swap PK?  (0) 2020.09.16
[MySQL][JDBC] SQLException : server time zone value 'KST' is unrecognized  (0) 2020.04.15

관련글 더보기

댓글 영역