inflearn logo
강의

Course

Instructor

Create your first server with Java and Spring Boot, from development to deployment, easily! [All-in-one server development package]

Lecture 38. Profile and H2 DB

Whitelabel Error Page 오류가 났습니다.

161

seongmin2053

4 asked

0

h2-console 웹에 접속하려고 하니 Whitelabel Error Page 오류가 뜹니다. 그래서 구글링하니 Spring Security에서 h2 console을 허용하라는데 어떻게 하는지 잘 모르겠습니다 ㅜㅜ.. 도와주세요 ㅜㅜ

java spring aws mysql spring-boot jpa

Answer 2

0

lannstark

안녕하세요!! 🙂 seongmin2053님~

혹시 현재 application.yml 설정이 어떻게 되어 있는지, 어떤 경로로 h2-console로 접근하려 했는지 확인 가능하실까요?!

사용하신 설정을 기반으로 어떤 부분이 문제인지 추적해 볼 수 있을 것 같습니다. 🙇

0

seongmin2053

넵 제가 확인이 늦었네요 죄송합니다ㅜㅜ

spring:
  config:
    activate:
      on-profile: local
    datasource:
      url: "jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER"
      username: "sa"
      password: ""
      driver-class-name: org.h2.Driver
    jpa:
      hibernate:
        ddl-auto: create
      properties:
        hibernate:
          show_sql: true
          format_sql: true
          dialect: org.hibernate.dialect.H2Dialect
    h2:
      console:
        enabled: true
        path: /h2-console

---
spring:
  config:
    activate:
      on-profile: dev
  datasource:
    url: "jdbc:mysql://localhost/library"
    username: "root"
    password: "1234"
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        dialect: org.hibernate.dialect.MySQL8Dialect

0

lannstark

아유 아닙니다 ㅎㅎㅎ 편하신 때에 알려주셔요! 설정 확인 결과 특이사항은 없는데요! (= 이론상 잘 동작해야 하는데요!)

  1. 어떤 profile로 서버를 실행시키셨는지

  2. 서버가 실행될 때의 활성화된 profile은 무엇인지

  3. 어떤 경로로 접근하셨는지

알려주시면 원인 파악에 더 도움이 될 것 같습니다.

0

seongmin2053

  1. profile은 local 로 실행시켰습니다!

  2. 활성화된 profile 역시 local 로 확인했습니다!

  3. 질문 이해를 잘 못하였습니다 ㅜㅜ http://localhost:8080/h2-console 경로로 접근하였습니다

     

그런데 제가 서버를 실행하니 h2 데이터베이스에서 user 예약어 때문에 오류가 떴는데 이것 때문에 접속이 안되는 것 같습니다. 이 오류를 해결하기 위해 "user" 이런식으로 따옴표로 감싸라고 하는데 어떻게 해결해야 하는지 잘 모르겠습니다.

 

0

lannstark

3번, 접근 하신 경로는 URL을 문의 드린 것이 맞습니다! 모두 다 잘 하셨네요!

그런데 제가 서버를 실행하니 h2 데이터베이스에서 user 예약어 때문에 오류가 떴는데 이것 때문에 접속이 안되는 것 같습니다

라는 오류가 나는 경우는 서버 자체가 실행되다가 에러로 인해 종료될거라 /h2-console 로 접속되지 않는 충분한 원인이 될 것 같습니다.

아래 글을 타고 들어가 참고해보시면 도움이 될거에요!

 

여기에도 해결책을 간략히 말씀드리면

  1. User Entity 위에 @Table(name = "users") 라는 코드를 추가해 User entity는 user 테이블 대신 users 테이블을 사용하게 한다

  2. H2 예약에서 user 를 제외해 user 테이블을 사용할 수 있게 한다

두 가지 방법이 있습니다! 둘 중 편하신 쪽으로 적용해도 좋습니다. 감사합니다! 🙇

0

seongmin2053

자세한 설명 너무 감사합니다! ㅜㅜ

보내주신 링크 질의글 확인했습니다! 제가 이해한 것이 맞다면 NON_KEYWORDS=USER가 H2 데이터베이스에서 USER 예약어를 제거하는 것인데 제가 위 답글에서 보내드린 YML 코드에 보면 현재 USER 예약어를 제거하고 있음에도 불구하고 여전히 오류가 뜨는 이유가 궁금합니다!

0

lannstark

안녕하세요! 대댓글이라 늦게 확인했군요 😭

제가 이해한 것이 맞다면 NON_KEYWORDS=USER가 H2 데이터베이스에서 USER 예약어를 제거하는 것인데 제가 위 답글에서 보내드린 YML 코드에 보면 현재 USER 예약어를 제거하고 있음에도 불구하고 여전히 오류가 뜨는 이유가 궁금합니다!

이해 해주신 내용이 정확히 맞습니다. 말씀해주신 것처럼 이론적으로는 해당 오류가 사라져야 맞는데요, H2 버전이 다르거나 제가 아직 알지 못하는 모종의 이유로 해당 옵션이 동작하지 않는 가능성이 있을 것 같아요 🥺 제 경험상 이런 부분은 정확히 같은 환경, 정확히 같은 버전으로 확인해 깊이 있는 디버깅을 해야 하다보니... 우선은 @Table 을 사용해 지나가셔도 좋을 것 같습니다. 감사합니다. 🙇

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. seongmin2053님.

“Whitelabel Error Page”는 주로 Spring Boot에서 발생하는 일반적인 오류 페이지로, 주로 설정 문제로 인해 발생합니다. 특히, h2-console에 접근할 때 이 오류가 발생하는 경우, Spring Security 설정에서 h2-console 경로가 허용되지 않아 발생할 수 있습니다.

Spring Security를 사용하고 있는 경우, 다음과 같은 방법으로 h2-console에 대한 접근을 허용할 수 있습니다:

  1. WebSecurityConfigurerAdapter를 상속받는 Security Configuration 클래스를 생성합니다.
  2. configure 메서드를 오버라이드하여 h2-console 경로에 대한 접근을 허용합니다.

아래 예시를 참고하세요:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/h2-console/**").permitAll()  // h2-console 접근 허용
            .and()
            .csrf().disable()  // CSRF 비활성화 (개발 환경용)
            .headers().frameOptions().disable();  // 프레임 옵션 비활성화
    }
}

위 설정을 적용한 후, 다시 h2-console에 접속해 보시면 Whitelabel Error Page 문제 없이 접속이 가능할 것입니다.

관련하여 더 깊이 있는 정보가 필요하시다면, Whitelabel Error Page 라고 나옵니다.. 구글링해 보면서 찾아보았는데 어떻게 해결하죠?(해결) 게시물을 확인해 보세요.

저는 질문자님의 이해를 돕고자 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

패키지 구분에 대해 궁금한게 있습니다

0

9

1

리액트 관련 질문이 있습니다.

0

62

2

스프링부트 버전

0

68

2

7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.

0

55

2

33강. UserLoanHistory의 관계성에 대한 질문

1

53

2

Java JDK 버전 문의의 건

0

131

2

ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.

0

83

3

h2 console 접속했을 테이블 질문

1

63

1

ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨

0

72

2

15강. updateUser() 질문

0

53

2

깃허브 질

0

80

2

여기까지 다 끝냈다고 하셨는데

0

76

2

왜안될까요

0

68

2

MySQL 창이안ㄴ뜹니다

0

56

2

포스트맨

0

47

1

spring 개념적인 질문

0

69

2

인텔리제이 샘플코드 실행 안됨 오류

0

138

2

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

0

81

1

마이그레이션 오류입니다.

0

168

3

안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ

1

89

3

궁금한게 있습니다.

0

55

2

DTO 관련

0

68

2

궁금한게 있습니다!

0

64

2

35강에서 returnBook 에서 userLoanHistory 값 중복에 관하여

0

54

2