• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

spring boot 3.0 이상에서 H2 사용 시 Database not found 문제 해결법 공유

23.10.14 21:13 작성 조회수 1.23k

4

spring boot 3.0이상에서

H2 사용할 때 test connection에서 실패하는 경우가 있을 수 있습니다.

에러 메시지로

Database "mem:testdb" not found, either pre-create it or allow remote database creation.

이 뜬 경우 아래와 같은 해결책을 사용할 수 있습니다.

 

우선 에러의 원인은 mem:testdb 데이터베이스가 존재하지 않기 때문에 발생합니다. H2 1.4이상 버전부터는 보안 상 문제 때문에 스프링부트 기동 시 데이터베이스 자동 생성을 막아두었다고 합니다. DB가 없으니 위와 같은 에러 메시지가 발생한 것이죠.

 

H2 dependency 버전을 다운그레이드 시켜도 되겠지만, 솔직히 최신 버전의 dependency를 사용하고 싶잖아요? 문제 해결을 위해서 수동으로 데이터베이스를 생성하면 됩니다.

 

해결법은 생각보다 간단한데요. 임의의 더미 Entity를 만들어서 DB 생성을 유도하게 만들면 됩니다.

 

자세한 방법은 해당 블로그의 글을 참고하시기 바랍니다.

https://shanepark.tistory.com/435

 

 

답변 2

·

답변을 작성해보세요.

0

안녕하세요, 이도원입니다.

Spring Boot 3 + H2 최신 버전으로 테스트 시 아래와 같이 설정하시고 진행 해 보시기 바랍니다.

spring:
  config:
    import: optional:configserver:http://127.0.0.1:8888/
  cloud:
    config:
#      name: ecommerce
      name: user-service
  application:
    name: user-service
 h2:
    console:
      enabled: true
      settings:
        web-allow-others: true
      path: /h2-console
  jpa:
    hibernate:
      ddl-auto: update
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:testdb
    username: sa
    password:

참고로 해당 강좌의 최신 샘플 코드는 아래 github에서 확인해 보실 수 있습니다. 참고 해 보시기 바랍니다.

https://github.com/joneconsulting/toy-msa

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.10.16

안녕하세요, 인프런 AI 인턴이에요.

H2 데이터베이스를 사용할 때, spring boot 3.0 이상 버전에서 test connection에서 실패하는 문제가 발생할 수 있습니다. 이 에러 메시지는 “mem:testdb” 데이터베이스가 존재하지 않기 때문에 발생하는 것입니다. H2 1.4 이상 버전부터는 보안 상의 이유로 스프링부트 기동 시 데이터베이스의 자동 생성이 막혀 있는데요. 그래서 해당 에러 메시지가 표시되는 것입니다.

해결책으로는 H2 dependency 버전을 다운그레이드하는 방법도 있지만, 최신 버전의 dependency를 사용하고 싶을 것입니다. 이 경우에는 수동으로 데이터베이스를 생성하는 방법을 사용할 수 있습니다.

해결 방법은 간단합니다. 임의의 더미 엔티티를 만들어서 데이터베이스 생성을 유도하면 됩니다. 위에 공유한 블로그의 글에서 자세한 방법을 확인하실 수 있습니다.

이 방법을 사용하면 H2 데이터베이스를 사용할 때 발생하는 “Database not found” 문제를 해결할 수 있습니다. 추가적인 도움이 필요하시면 댓글로 알려주세요. 감사합니다.