본문 바로가기
Spring

데이터베이스 H2 콘솔 접근 에러 [Spring Boot]

by 난타코다옹 2023. 10. 30.

목차

    아래 오류는 Spring Boot에서 H2 콘솔에 접근하는 방법을 설명한 가이드에 따라 작업하였으나 작동하지 않는다는 내용입니다.

    에러 내용

    http://localhost:8080/h2/ Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Oct 26 12:31:46 BST 2016 There was an unexpected error (type=Not Found, status=404). No message available

    해당 문제를 해결하기 위해 application.properties 파일을 다음과 같이 작성하였습니다.

    spring.h2.console.enabled=true 
    spring.h2.console.path=/h2

    그런데 기본 경로인 /h2-console도 작동하지 않습니다.

    다른 답변에서는 Application.java에 다음과 같이 추가하여 문제를 해결한 것을 찾았습니다.

    @Bean
    public ServletRegistrationBean h2servletRegistration() {
        ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
        registration.addUrlMappings("/h2/*");
        return registration;
    }

    하지만 제 application.properties 파일의 모든 내용이 무시되는 것 같습니다. 다음과 같이 추가해 보았지만 여전히 데이터베이스가 메모리에만 생성됩니다.

    spring.datasource.url=jdbc:h2:file:~/portal;DB_CLOSE_ON_EXIT=FALSE
    spring.datasource.username=sa
    spring.datasource.password=
    spring.datasource.driverClassName=org.h2.Driver

    이 문제를 해결하기 위해 몇 가지 해결책을 제시해 드릴게요. 😊

    해결책

    1. application.properties 파일의 경로를 확인해 보세요. Spring Boot는 기본적으로 클래스 경로의 /config 또는 / 프로젝트 루트에 있는 application.properties 파일을 자동으로 로드합니다.
    2. application.properties 파일에 설정한 내용이 적용되지 않는다면, application.properties 파일을 application.yml 파일로 변경해 보세요.
    3. H2 데이터베이스를 파일로 저장하려면 다음과 같이 설정해 보세요.위 설정은 H2 데이터베이스를 사용자의 홈 디렉토리에 portal이라는 파일로 저장하고, 애플리케이션이 종료될 때 데이터베이스를 닫지 않도록 설정합니다.
    4. spring.datasource.url=jdbc:h2:file:~/portal;DB_CLOSE_ON_EXIT=FALSE spring.datasource.username=sa spring.datasource.password= spring.datasource.driverClassName=org.h2.Driver
    5. H2 콘솔을 사용하기 위해 다음과 같이 설정해 보세요.위 설정은 H2 콘솔을 활성화하고, 경로를 /h2로 설정합니다.
    6. spring.h2.console.enabled=true spring.h2.console.path=/h2

    결론

    Spring Boot에서 H2 콘솔에 접근하는 문제는 주로 설정 파일(application.properties 또는 application.yml)의 경로, 설정 내용의 오타, 데이터베이스 URL 등의 문제로 인해 발생할 수 있습니다. 위에서 제시한 해결책을 차례대로 시도해 보세요. 문제가 계속되면 프로젝트의 구조와 설정 파일을 다시 한 번 확인해 보세요.