나만의 에러로그

H2 데이버베이스를 사용하며 생긴 오류들 정리

brianshin96 2024. 10. 29. 23:20

프로젝트 진행중에 테스트를 위해 mysql같은 db를 쓰는건 너무 많은 시간이 걸릴 뿐더러 실제 서비스 작동시 더미 데이터들이 혼용될 가능성이 있습니다.

 

그래서 H2 데이터베이스를 쓰기로 마음을 먹었는데... 이 놈 참 여러모로 연결하기가 까다롭습니다.

 

제가 h2 데이터베이스를 사용하며 마주한 이슈들에 대해 정리해서 도움이 됐으면 합니다.

 

일단 제가 설치한 h2의 버전은 아래 링크와 같습니다.

https://h2database.com/h2-2019-03-13.zip

 

최신 버전보다 낮은 버전을 설치한 이유는 제가 h2를 연결하면서 수없이 만난 연결 에러들 때문입니다.

만약 h2 db 연결시 아래와 같은 에러가 나온다면,

Connection is broken: "java.net.ConnectException: Connection refused (Connection refused): localhost" [90067-200]

 

여기 글을 한번 참고해보셨으면 좋겠습니다.

https://www.inflearn.com/community/questions/28178/h2-db-%EC%97%B0%EA%B2%B0-%EC%97%90%EB%9F%AC?srsltid=AfmBOoqpiemX-ggppVX_NHtrQNqCU_rXRLgkl-w15SF08mOLsl9X6sUh

 

H2 DB 연결 에러 - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

 

설치 방법은 위의 링크를 타고 알집을 푸신 다음, h2/bin폴더의 h2.bat을 통해 h2를 실행 시키면 됩니다.

실행시킨후 꼭 체크해주셔야할 것은,

 

1. test.mv.db파일의 위치

2. application.properties나 application.yaml 파일 설정

3. h2 데이터베이스 접속

입니다. 

 

1. test.mv.db파일의 위치

  위의 버전의 h2를 설치해서 실행했다면, test.mv.db는 bin 폴더에 설치되어있을겁니다.

최신버전은 C:\Users\{사용자pc이름}에 test.mv.db가 위치해있을 수 있습니다. 이럴 경우 중요하지 않은 데이터라면 삭제하는게 좋습니다.

 

2. application.properties나 application.yaml 파일설정

제 yaml파일 설정은 아래와 같습니다.

spring:
  data:
    datasource:
      url: jdbc:h2:mem:testdb
      driver-class-name: org.h2.Driver
      username: sa
      password: 123456

url을 변경할 경우 이상하게도 에러가 나오더군요. 

 

3. test.mv.db파일의 위치

  설치된 test.mv.db를 파일 탐색기 주소창을 클릭하면 주소를 복사할 수 있습니다. 이를 복사한후,

데이터베이스 칸에 붙여넣어줍시다.

만약 h2 db생성시 id와 password를 설정했다면 여기에 같이 적어줍니다.

제 yaml파일을 기준으로 본다면 id는 sa, password는 123456이 되겠군요.

 

본격적인 연결 에러들에 대해 확인하고 대체 방법을 적어보겠습니다. 

1. Connection is broken: "java.net.ConnectException: Connection refused (Connection refused): localhost" [90067-200]

제가 제일 먼저 맞닥뜨린 에러입니다. 

이 에러는 yaml파일 설정시 발생하는 것 같습니다.

제가 에러를 해결했을때는 url: jdbc:h2:mem:testdb로 바꿨을 때였습니다. 이유를 알게 된다면 업데이트 하겠습니다.

 

 

2. [90146][90146] Database "C:/Users/user/Downloads/h2/bin/test" not found, and IFEXISTS=true, so we cant auto-create it [90146-220]

이런 에러는 데이터베이스 주소 위치를 잘못 적은 경우 발생합니다.

 

이 밖에 여러 에러를 마주했는데 생각나는 것은 여기까지 입니다. 만약 더 많은 에러를 마주한다면 업데이트하도록 하겠습니다. 감사합니다.