[스프링부트]Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured 오류 해결방법
스프링부트 프로젝트 생성후 서버를 시작했을 때 오류가 발생되었다.
***************************
APPLICATION FAILED TO START
***************************
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).
오류 원인은? Reason: Failed to determine a suitable driver class이다. Database에 연결할 때 필요한 정보가 없기 때문이다. application.properties 파일이나 application.yml 파일과 같은 설정 파일의 위치를 옮겨도 이러한 현상이 나타난다.
오류 해결을 위해서는 대표적인 환경설정 파일 2개가 있는데 application.properties 파일과 application.yml 둘 중 하나만 있으면 스프링 프레임워크의 환경 요소의 값을 설정할 수 있는데 application.properties 파일과 application.yml 파일은 동일한 환경 요소 값들을 설정할 수 있지만 선언해서 사용하는 방식이 다르다.
이 두개의 설정파일 중 하나에 데이터베이스 정보를 정의해준다.
application.properties 파일 설정
#spring.datasource.url=jdbc:[Database]://localhost:3306/[Database스키마]
spring.datasource.url=jdbc:mysql://localhost:3306/[DB스키마명]?autoReconnect=true
spring.datasource.username=[DB 아이디]
spring.datasource.password=[DB 비밀번호]
#spring.datasource.driver-class-name=[JDBC 드라이버]
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = update
application.yml 파일 설정
spring:
datasource:
url: jdbc:[Database]://localhost:3306/[Database스키마]
username: [DB 아이디]
password: [DB 비밀번호]
driver-class-name: [JDBC 드라이버]
또 다른 해결방법으로 ,데이터베이스 없이 서버를 시작하고 싶은 경우에는 아래코드와 같이 Application 클래스 파일에 @SpringBootApplication어노테이션에 (exclude = DataSourceAutoConfiguration.class)를 추가해준 후 서버를 시작하면 정상적으로 동작하게 된다.
package test.jpa.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class TestJpaApplication {
public static void main(String[] args) {
SpringApplication.run(TestJpaApplication.class, args);
}
}
[reference]