Sto usando flyway con gradle, ho eseguito manualmente una delle migrazioni all'interno della console del database, voglio eseguire flyway, ma dico di ignorare una versione di migrazione specifica tra tutte le altre. Può essere fatto ?Come saltare una migrazione specifica con flyway?
risposta
Dovresti modificarlo un po 'per farlo funzionare, quindi non consiglio questo approccio, ma funzionerebbe in un pizzico.
L'ho provato solo con Maven, ma sono abbastanza sicuro che funzionerebbe anche con Gradle.
migrato fino alla versione precedente a quello applicato manualmente
# Assuming you applied 01.002 manually $ mvn flyway:migrate -Dflyway.target=01.001
inserire una riga per lo script è stato applicato
-- Make sure these vals closely replicate those from other rows insert into schema_version(installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success) values (2, '01.002', 'static_data', 'SQL', 'V01/V01.002__static_data.sql', null, 'username', current_timestamp, 0, true);
Riparare il
schema_version
checksum$ mvn flyway:repair
applicano le altre migrazioni
$ mvn flyway:migrate -Dflyway.validateOnMigrate=false -Dflyway.outOfOrder=true
I due -D
proprietà non ci può essere necessario, a seconda che hai il insert
corretta o meno. Flyway potrebbe non essere d'accordo con la descrizione dello script, ad esempio, anche se il checksum è corretto.
Non consigliato Ma se si vuole ancora:
1) Run flywayMigrate, diamo la migrazione sicuro.
2) Aggiornare manualmente la tabella meta flyway (colonna di successo) per quella specifica versione di migrazione.
3) Eseguire flywayMigrate di nuovo.
4) Fatto, flyway inizierà ora con la versione successiva della migrazione.
questo approccio funziona per me. – hidekuro
A volte non è necessario inserire "inserito" (ad esempio se lo script di aggiornamento non è riuscito ad aggiungere una colonna esistente o a eliminare la tabella già rimossa). Consentire solo a Flyway di fallire e correggere l'ultima riga impostando 'success = 1'. Puoi fare un fallimento sicuro con la spazzatura all'inizio dello script di aggiornamento (che impedisce ulteriori azioni potenzialmente pericolose). Basta rimuovere la spazzatura prima di 'flyway: repair' – gavenkoa