Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Falha ao iniciar a aplicação - Migrations não encontradas

Olá, após a adição do flyway ao projeto e criação das migrations, comecei o erro abaixo ao rodar o projeto. Tentei especificar o diretório no application.yml usando a chave flyway.locations.classpath: /db/migration dentro da chave spring. Mas não adiantou.

Alguém sabe como resolver esse erro?

....

2022-05-09 18:55:27.516  WARN 2772 --- [  restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception; nested exception is org.springframework.boot.autoconfigure.flyway.FlywayMigrationScriptMissingException: Cannot find migration scripts in: [classpath:db/migration] (please add migration scripts or check your Flyway configuration)
2022-05-09 18:55:27.517  INFO 2772 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2022-05-09 18:55:27.524  INFO 2772 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2022-05-09 18:55:27.529  INFO 2772 --- [  restartedMain] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2022-05-09 18:55:27.553  INFO 2772 --- [  restartedMain] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-05-09 18:55:27.627 ERROR 2772 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Flyway failed to initialize: none of the following migration scripts locations could be found:

    - classpath:db/migration


Action:

Review the locations above or check your Flyway configuration


Process finished with exit code 0

Ps.: A versão do flyway que estou utlizando é a 7.10.0. Já testei com a 8.5.10 (a mais atual no momento que criei o post) e deu o mesmo erro.

7 respostas

Atualização

Eu testei esta solução que encontrei no StackOverflow, exceto pelo passo 3. Pois quando abria o IntelliJ novamente, ele já criava as pastas gradle e .gradle

Aqui o que funcionou usando a versão 8.5.11 foi a seguinte configuração (usei uma pasta "sql" dentro de resources só para testar com uma pasta diferente da padrão):

spring:
  flyway:
    locations: sql

No application.properties imagino que o equivalente seria:

spring.flyway.locations= sql

Isso é claro imaginando que sua pasta "db/migrations" está dentro da resource.

Olá Leonardo, eu estou usando um arquivo .yml com a seguinte configuração:

spring:
  dataSource:
    driverClass: org.h2.Driver
    url: jdbc:h2:mem:forum
    username: sa
    password:

  jpa:
    database-plataform: org.hibernate.dialect.H2Dialect
    properties:
      show_sql: true
      format_sql: true

  flyway.locations: db

E atualizei a versão do flyway para 8.5.11, mas ainda assim continuo recebendo o erro de que o flyway não está encontrando o diretório com as migrations.

Grato pela colaboração! Abraços

Oi,

Manda um print da estrutura de diretórios do seu projeto, expandindo a pasta das migrations.

Oi Rodrigo, segue em anexo

Estrutura de diretórios do meu projeto para o curso de API resto em Kotlin com Spring Boot

solução!

Hum, acredito que o problema é por conta da sua pasta ter o nome db.migration, pois desse jeito é uma pasta com esse nome e não uma pasta chamada migration dentro da pasta db.

Renomeia essa pasta para db e cria dentro dela uma subpasta mesmo chamada migration para ver se resolve.

Valeu, Rodrigo!!

Só uma observação, precisei setar a chave flyway.locations: ./db/locations ao invés de flyway.locations: db/locations