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

Tabelas com flyway

não estou conseguindo resolver erro, as tabelas não estão sendo criadas com flyway, tudo está ok pelo log, só a conexão com o flyway que nao está ok
HikariPool-1 - Starting ...
HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@fbbdc0b, eu vejo pelo log que esta tudo ok so nao o flyway

4 respostas

Oii Andreza,

Pelo trecho de log que você enviou, a conexão com o banco de dados está acontecendo corretamente (o HikariPool iniciou e conectou), mas o Flyway não está rodando os scripts. Isso costuma acontecer quando o Flyway não consegue encontrar os arquivos .sql dentro do projeto.

Vamos verificar esses dois pontos:

1. A estrutura de pastas (Diretórios)

No IntelliJ e em outras IDEs, ao criar uma pasta digitando db/migration ou db.migration, às vezes o sistema cria uma única pasta com esse nome composto, em vez de criar uma pasta db e, dentro dela, uma subpasta migration.

Para o Flyway funcionar, a estrutura precisa ser hierárquica dentro de src/main/resources:

  • Pasta: db
  • Pasta: migration (dentro da db)
  • Arquivo: V1__...

Verifique se você consegue expandir a pasta db para ver a migration dentro dela. Se for uma pasta só com o nome "db.migration", o Flyway não a encontra.

2. O nome do arquivo (Underlines)

O padrão de nomenclatura do Flyway é muito estrito. O arquivo precisa ter dois underlines (sublinhados) após a versão.

  • Correto: V1__create-table-medicos.sql (dois underlines após o V1)
  • Incorreto: V1_create-table-medicos.sql (apenas um underline)

Se tiver apenas um, o Flyway ignora o arquivo silenciosamente.

O que fazer agora?

Verifique esses dois pontos. Se for a estrutura de pastas, apague e crie pasta por pasta (primeiro a db, depois entre nela e crie a migration). Se for o nome do arquivo, basta renomear adicionando o segundo underline.

Depois disso, pare a aplicação e rode novamente. Se der certo, você verá logs começando com Flyway logo após os logs do HikariPool.

Se ainda assim não funcionar, poderia mandar um print de como ficou a sua estrutura de pastas do lado esquerdo da IDE?

Fico no aguardo.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Eu já tentei um exemplo a pasta fica assim db.migration só aparece em outro formato se tiver duas pastas fiz um texte criei uma pasta chamada migration e outra teste ai fica db - migration e teste dentro, se for so a pasta migration fica como havia mencionado. mas tirei um print e realmente mostra a pasta migration dentro de db Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Oii Andreza,

Obrigada pelo print, ele ajudou muito a entender o que está acontecendo.

Pela imagem do Windows Explorer (a janela branca à direita), a sua estrutura de pastas está correta. Existe a pasta db e, dentro dela, a pasta migration.

O fato de aparecer db.migration no IntelliJ (lado esquerdo) é apenas uma configuração visual da IDE chamada "Compact Middle Packages". Quando uma pasta só tem uma subpasta dentro, o IntelliJ as exibe na mesma linha para economizar espaço, mas fisicamente elas estão separadas. Então, não precisa se preocupar com isso agora.

Como a estrutura e o nome do arquivo (V1__...) parecem corretos, mas o Flyway continua "silencioso" (não aparece no log), o problema costuma tá em um destes dois pontos: o projeto não atualizou a pasta de saída ou a dependência está faltando.

Tente os passos abaixo na ordem:

1. Forçar a atualização dos recursos (maven clean)

Às vezes, quando criamos pastas novas em resources, o IntelliJ não copia isso imediatamente para a pasta target (que é o que roda de verdade).

  1. No IntelliJ, abra a aba Maven.
  2. Abra a pasta do seu projeto > Lifecycle.
  3. Dê um clique duplo em clean. (Espere terminar).
  4. Dê um clique duplo em install.
  5. Tente rodar o projeto novamente (Run).

**2. Verificar o pom.xml**

Se o passo anterior não funcionar, precisamos garantir que o Flyway tá instalado. Se a biblioteca não estiver lá, o Spring Boot ignora a existência da pasta db/migration.

Abra seu arquivo pom.xml e verifique se este trecho está presente dentro de <dependencies>:

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

Se você estiver usando MySQL com Spring Boot 3 ou superior, às vezes é necessário adicionar também:

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-mysql</artifactId>
</dependency>

Faça esses testes e me diga se apareceu algo novo no log (procure por linhas começando com "Flyway").

Abraço.

obrigada Lorena