spring boot h2 memtestdb not found 문제
2719 단어 H2SpringbootH2
h2 console 접근 에러
- gradle이나 maven으로 h2 라이브러리를 추가하고 별도의 설정없이 Spring 프로젝트를 실행하면 인메모리 기반의 h2 db가 생성되어 동작합니다.
- 그러나 DB 관리를 위해 콘솔을 접속하여 로그인하면 아래와 같이 에러가 발생합니다.
- JDBC URL의 기본 값으로 mem:testdb 라고 되어있는데, Connect 버튼을 누르면 mem:testdb를 찾을 수 없다는 에러가 발생합니다.
- 예전에는 자동으로 testdb가 자동으로 생성되었지만, 버전이 바뀌면서 자동으로 생성되지 않도록 수정되었다는 것을 짐작할 수 있습니다.
h2 db 버전 히스토리
- 테스트 당시 gradle에 h2 버전을 명시하지 않았기 때문에, 최신 버전을 사용했습니다.
(2021.08월 기준, 2019.10월에 릴리즈된 1.4.2 버전이 최신입니다.) - h2 보안 문제로 testdb를 자동 생성 하지 않도록 수정된 버전은 1.4.198(2019년 2월 릴리즈) 입니다.
- TCP Server and H2 Console do not allow creation of new databases by default. (릴리즈노트 참고)
문제 해결방법
-
해결 방법은 2 가지가 있습니다.
- 1.4.198 이전 버전으로 되돌리는 방법
- 설정을 통해 데이터베이스를 생성하는 방법 (최신버전에서 권장하는 방식)
-
첫번째 방법은 1.4.198 이전 버전을 사용하는 것이고,
-
두번째 방법은 설정파일에 데이터베이스를 설정하는 것입니다.
- 사실 단순히 테스트용으로 개발하는 용도라 굳이 보안에 신경을 쓰지 않아도 되지만, 설정을 통해 직접 db를 생성하는 방식이 권장됩니다.
application.yml 설정
- 간단하게 아래와 같이 url와 계정정보를 설정해주면 됩니다.
- username과 password를 설정하지 않으면 디폴트 값으로 비밀번호 없이 sa 계정으로 접속 가능합니다.
spring:
h2:
console:
enabled: true
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE
#username: sa
#password: 1234
- 설정 후 프로젝트를 재실행한 후 콘솔에 접속하여 설정한 정보로 입력하면 로그인에 성공합니다.
Author And Source
이 문제에 관하여(spring boot h2 memtestdb not found 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lehdqlsl/spring-boot-h2-memtestdb-not-found-문제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)