1
resposta

[Sugestão] Alternativa para fazer repair em uma migration Flyway que falhou

Tentei executar uma Flyway migration que não foi bem-sucedida porque o código SQL estava errado. O arquivo 'corrompeu' e precisou ser ajustado. Uma forma que funcinou foi criar e executar um novo arquivo FlywayRepair.java com o seguinte código:

package med.vol.api.controller;

import org.flywaydb.core.Flyway;

public class FlywayRepair { public static void main(String[] args) { Flyway flyway = Flyway.configure() .dataSource("jdbc:mysql://localhost/vollmed_api", "seu_usuario", "sua_senha") .load();

    flyway.repair(); // Executa o reparo do histórico de migração
    System.out.println("Flyway repair executado com sucesso!");
}

}

Fica sugestão para quem estiver com o mesmo problema. Abs

1 resposta

Olá Pedro! Tudo certo?

Obrigado por compartilhar sua solução com a comunidade!

A abordagem que você mencionou, utilizando o Flyway.repair(), é realmente uma alternativa válida para lidar com migrations que falharam. É sempre bom ter diferentes estratégias para resolver problemas, especialmente quando se trata de migrações de banco de dados.

No entanto, é importante lembrar que o método repair do Flyway não corrige o SQL incorreto, mas sim limpa o histórico de falhas, permitindo que você tente novamente após corrigir o script problemático.

Além disso, como mencionado no material do curso, outra abordagem é acessar diretamente o banco de dados e deletar as entradas com falha na tabela flyway_schema_history. Isso pode ser feito com o comando SQL:

delete from flyway_schema_history where success = 0;

Após isso, você pode corrigir o script de migração e tentar novamente. Se a migração falhou após criar tabelas ou colunas, pode ser necessário recriar o banco de dados para garantir que o estado inicial esteja limpo.

Ambas as abordagens têm seus méritos, e a escolha entre elas pode depender do contexto e das preferências pessoais.

Bons estudos!

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