Failed to configure a DataSource

준우·2023년 3월 25일
0

Error Report

목록 보기
12/14
post-thumbnail

오류

Failed to configure a DataSource

Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

위 오류는 application.properties 혹은 application.yml 파일에 db의 url 이 지정되어있지 않으면 나는 오류인데, 나의 경우에는 URL이 지정되어있었다.

원인

무중단 배포를 구성하던 중 properties 파일에 아래 코드를 추가하니 나는 오류였는데,

spring.config.name=application

위 속성은 아래 세개 속성과 함께 써줘야한다고 한다.


spring.config.name=application
spring.config.activate.on-profile=default
spring.config.location=classpath:/application.properties

spring.config.activate.on-profile에 local을 적으면 application-local.properties가 실행되고, default를 적으면 application.properties 가 실행된다.

spring.config.location은 야물 혹은 프로퍼티스 파일이 속한 위치를 적어주는 것인데,
자신의 위치를 가르킬 때는 위와 같이 적으면 된다.

활용

그래서 application-local.properties를 활성화 시키고 싶다면
아래와 같이 하면 된다.

application.properties

#기타 속성들 ...

spring.profiles.active=local

application-local.properties

spring.config.name=application-local
spring.config.activate.on-profile=local
spring.config.location=classpath:/application-local.properties

# 포트를 다르게 지정하고 싶다면
server.port=8081

이렇게 하면 application-local.properties 파일의 속성은 application.properties 파일의 속성을 오버라이드 한다.

spring.profiles.active=local 라인은 local 프로파일을 활성화하므로,
Spring은 application-local.properties 파일에서 속성을 가져와서 application.properties 파일의 동일한 속성을 덮어쓴다.

따라서, server.port=8081은 application.properties 파일에 정의된 포트 번호 대신 8081로 설정된다.

보통은 포트를 나눌 때는 yml 파일에 아래와 같이 두 개 파일처럼 --- 를 구분자로 나눠 설정을 할 수 있어서 아래 방법을 많이 사용한다.

---
spring:
  config:
    activate:
      on-profile: set1
server:
  port: 8081
---
spring:
  config:
    activate:
      on-profile: set2
server:
  port: 8082

0개의 댓글