Olá, Guilherme
Entendo sua preocupação em não querer perder os dados do banco. No caso de uma migration falhar e criar tabelas ou colunas indesejadas, o Flyway realmente não vai apagar esses elementos automaticamente.
Se você não quer apagar o banco de dados inteiro, uma solução seria identificar as tabelas e/ou colunas que foram criadas pela migration que falhou e apagá-las manualmente. Para isso, você pode usar comandos SQL como DROP TABLE nome_da_tabela
para apagar uma tabela inteira ou ALTER TABLE nome_da_tabela DROP COLUMN nome_da_coluna
para apagar uma coluna específica de uma tabela.
Depois de fazer isso, você pode executar novamente o comando delete from flyway_schema_history where success = 0;
para apagar da tabela do Flyway a referência à migration que falhou.
No entanto, é importante lembrar que essa abordagem pode ser arriscada, pois se você apagar uma tabela ou coluna que está sendo usada em algum lugar do seu código, isso pode causar erros. Portanto, é fundamental ter certeza de que as tabelas e colunas que você está apagando realmente foram criadas pela migration que falhou e não são necessárias para o funcionamento do seu projeto.
Espero ter ajudado e bons estudos!