[Spring/스프링] Failed to determine a suitable driver class 에러

이 에러는 처음 프로젝트를 만들고 실행할 때, 많이 겪는 에러입니다. 아마도 이 글을 읽고 있는 독자분들도 스프링을 시작하시는 단계이거나 스프링에 익숙하지 않은 분들 일거라고 생각합니다.

에러의 발생 원인은?

이 에러의 원인은 스프링에서 database를 사용한다고 설정해두고, 정작 datasource는 설정이 되어 있지 않은 것입니다.

에러 로그

***************************
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).

위 에러 로그는 DataSource의 url설정이 없어 특정할 수 없는 경우 입니다.

해결 방법

해결하는 방법에는 2가지가 있습니다. 스프링 설정에서 datasource 자동설정을 제외하는 방법과 datasource 데이터를 설정해주는 방법입니다.

자동 설정 제외하는 방법

다음 코드는 kotlin, spring boot 환경에서 작성되었습니다.

@SpringBootApplication(exclude = [DataSourceAutoConfiguration::class])
class TestApplication

fun main(args: Array<String>) {
    runApplication<TestApplication>(*args)
}

위와 같이 @SpringBootApplication 어노테이션안에 exclude 배열 값에 DataSourceAutoConfiguration::class를 추가해주시면, 어플리케이션이 구동할 때, datasource 설정하는 부분이 동작하지 않아 에러가 발생하지 않습니다.

datasource 데이터를 설정하는 방법

설정을 해제하지 않고 적절한 설정 값을 넣어주면 정상 동작하게됩니다.

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_name?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root

맺음

간단하게 Failed to determine a suitable driver class 에러 발생원인과 해결 방법을 알아보았습니다. 혹시 궁금하신 점이나 이상한 점 있으면 댓글 부탁드리겠습니다.

Buy me a coffee
글이 도움이 되셨다면, 커피 한 잔만 사주세요!
Comments
Copied to clipboard