인프런 커뮤니티 질문&답변

rnxogud123님의 프로필 이미지

작성한 질문수

쥬쥬와 함께 하루만에 끝내는 스프링 테스트

flyway jdbcdriver 오류

작성

·

322

0

https://www.inflearn.com/questions/1199599/m1-mac-도커-컴포즈-docker-compose-up-에러

안녕하세요 이전에 docker-compose에서 flyway를 띄울 때 오류가 있어 질문을 드렸습니다.

말씀해주신대로 버전을 변경해서 실행을 하니 해당 오류는 발생하지 않으나 다른 에러가 발생하였습니다.

ERROR: Unable to instantiate JDBC driver: com.mysql.cj.jdbc.Driver => Check whether the jar file is present

Caused by: Unable to instantiate class com.mysql.cj.jdbc.Driver : com.mysql.cj.jdbc.Driver

Caused by: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

 

나름대로 구글링해본 결과 직접 jdbc 파일을 넣어주어야 한다고 하는데 이렇게 하는게 맞을까요?

flyway의 github에 들어가서 compose 파일을 확인하니 alphine 리눅스로 되어 있던데 jdbc driver jar파일을 다운받으려고 사이트를 들어가니 알파인 리눅스용 드라이버는 없던데 어떻게 해야할까요?

 

강사님으로부터 flyway를 처음 알게되었는데 유용할 것 같아 넘어갈 수 있는 부분이지만 다시 질문드리게 되었습니다. 감사합니다.

답변 2

0

쥬쥬님의 프로필 이미지
쥬쥬
지식공유자

안녕하세요 지식공유자 쥬쥬입니다.

 

별도의 jdbc 드라이버를 다운로드해서 넣어주는 것은 제가 실습하거나 개발했던 환경에서는 사례가 없엇던 것 같습니다.

 

flyway 버전의 변경으로 인해 드라이버의 클래스이름이 변경되었을 가능성이 있을 것 같습니다. 이 부분 확인해주시고 안되시면 답글 부탁드립니다 !

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.
rnxogud123님, Flyway를 이용한 데이터베이스 마이그레이션 중 JDBC 드라이버 관련 오류가 발생했군요.

구체적인 에러 메시지에 따르면, Flyway가 com.mysql.cj.jdbc.Driver 클래스를 찾지 못했습니다. 이는 MySQL JDBC 드라이버가 클래스패스(classpath)에 포함되어 있지 않음을 의미합니다.

스프링 부트와 Flyway 설정을 확인할 필요가 있는데, 본문에 제공된 Spring Boot 문서에 따르면 org.flywaydb:flyway-core 라이브러리를 클래스패스에 추가하면 Flyway의 데이터베이스 마이그레이션 기능을 자동으로 활용할 수 있습니다.
하지만, MySQL 데이터베이스를 사용하는 경우 JDBC 드라이버도 함께 추가해주어야 합니다. Flyway는 내부적으로 이 드라이버를 사용하여 데이터베이스에 연결합니다.

따라서, 프로젝트의 의존성 관리 파일(pom.xml 또는 build.gradle)에 MySQL JDBC 드라이버에 대한 의존성을 명시해야 합니다. 예를 들어 Maven을 사용하는 경우 다음과 같은 의존성을 추가할 수 있습니다:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>버전_명시</version>
</dependency>

Gradle을 사용하는 경우에는 다음과 같이 추가할 수 있습니다:

dependencies {
    implementation 'mysql:mysql-connector-java:버전_명시'
}

여기서 버전_명시 부분에는 사용하고자 하는 MySQL 드라이버의 버전을 명시해주어야 합니다.

혹시 도커 컨테이너 내부에서 Flyway를 실행하는 상황이라면, 도커 이미지 안에 JDBC 드라이버를 함께 포함해주어야 합니다. 이때는 해당 JDBC 드라이버를 도커 이미지 내부에 복사하거나, Dockerfile을 사용하여 이미지를 빌드할 때 JDBC 드라이버를 다운로드하여 포함시키는 방법을 사용할 수 있습니다.

만약 Flyway 관련 설정 파일을 찾고 계시다면, 해당 파일 내에서 spring.flyway.url, spring.flyway.user, spring.flyway.password 설정을 통해 Flyway의 데이터 소스를 명시적으로 설정할 수도 있습니다.

도움이 필요하시면 추가적인 문의사항을 남겨주시면 도와드리겠습니다. 오류 해결을 위해 행운을 빕니다!