인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Yoonho Aaron Kim님의 프로필 이미지

작성한 질문수

코드처럼 작성하는 SQL, Kotlin과 jOOQ로 시작하기

flyway 간단 설명

flywayClean 시 no database found 에러가 뜹니다 ㅠㅠ

해결된 질문

작성

·

94

1

flywayClean 실행해보면 다음과 같이 에러가 뜨는데요.

뭐가 문제인걸까요 ㅠㅠ

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':flywayClean'.
> Error occurred while executing flywayClean
  No database found to handle jdbc:mysql://localhost:3308/jooq

이전 단계에서 다음과 같이 세팅은 잘 마쳤어요.

val jooqVersion: String by extra("3.19.21")
val dbUrl = "jdbc:mysql://localhost:3308/jooq"
val dbUsername = "root"
val dbPassword = "1234"
val dbDrive = "com.mysql.cj.jdbc.Driver"

...

flyway {
	driver = dbDrive
	url = dbUrl
	user = dbUsername
	password = dbPassword
	locations = arrayOf("classpath:db/migration")
}

답변 2

1

Yoonho Aaron Kim님의 프로필 이미지

말씀하신 강좌에서 문제 해결하였습니다, 답변 감사합니다!

1

코틀린자바님의 프로필 이미지
코틀린자바
지식공유자

안녕하세요!

우선 flywayClean 명령어가 안되는게 맞습니다

숨겨진 옵션이 있는데요

cleanDisabled 가 default 값 true 로 돼 있어서 clean 을 못하게 설정이 돼있습니다.

결론적으로 cleanDisabled = false 로 한번 시도해보시면 될 것 같습니다.

일반적으로 개발 단계에선 true 로 하셔도 되지만 운영단계로 올리는 곳엔 false 로 하시는게 좋습니다.

우선 개발 단계에서 문제가 있으면 true 로 하고 clean을 또는 repair 를 하시면 될 것 같습니다.
혹시 해당방법으로 하셔도 문제가 있으면 다시 댓글 달아주세요!

flyway {
    url = "jdbc:h2:file:./testdb;MODE=MySQL"  // H2 데이터베이스 파일 위치
    user = "sa"                               // 데이터베이스 사용자
    password = ""                             // 비밀번호
    locations = arrayOf("filesystem:src/main/resources/db/migration")  // 마이그레이션 파일 위치
    baselineOnMigrate = true                 // 기존 데이터베이스에 대한 베이스라인 설정
    cleanDisabled = false                    // DB 초기화 허용
    validateOnMigrate = true                 // 마이그레이션 검증
    outOfOrder = false                       // 순서대로 마이그레이션 실행
}
코틀린자바님의 프로필 이미지
코틀린자바
지식공유자

아! 제가 데이터베이스 못 찾는 오류라고 적힌걸 못보고 잘못된 대답을 했을 수도 있을 것 같아 다시 댓글 답니다. 빌드 시점에 데이터베이스를 찾을 수 있어야 하는데 설정상 런타임에 보인다거나 하는 이유로 데이터베이스 찾지 못하는 에러가 발생할 수 있습니다. [7강에 있는 데이터베이스 찾지 못하는 오류 해결] 까지 적용해보시고 그때도 안되면 오류로그 올려주시면 답변드리겠습니다!