Flyway aktuellen Stand als default nehmen

OnDemand

Top Contributor
Hallo,

weiss gar nicht wie ich meine Frage formulieren soll.

Habe ca 50 scripte welche mittels Flyway ausgeführt werden wenn eine neue App startet/installiert wird. Dabei gibt es Scripte wo altes gelöscht wird usw. Wie kann ich Flyway so konfigurieren, dass ich mal einen aktuellen "DB Stand" Script baue und alle alten Updatescripte verwerfe? Der Erststart dauert inzwischen länger, was sich mit einem frischen "Stand" beheben lässt.

Lieben Dank für Eure Hilfe!
 

Robert Zenz

Top Contributor
Macht Flyway nicht nur Migrationen? Wuerde es demnach nicht reichen alle Migrationen wegzuwerfen und "einfach nur" den aktuellsten Stand aufzuspielen bei einer frischen Installation?
 

mihe7

Top Contributor
Wird denn bei jedem Start die DB platt gemacht? Weil die Produktionsinstanzen brauchen ja die Updates und können nicht von 0 starten
Es geht ja um neue DBs und die alten Skripte können (und sollten eine gewisse Zeit lang auch) bestehen bleiben.

Die Sache ist relativ simpel. Eine DB, die unter der Fuchtel von Flyway steht, hat eine Tabelle, in der die "Migrationen" festgehalten werden.

Bei neuen DBs wird die Tabelle also erstmal angelegt und Flyway führt alle Skripte (Migrationen), beginnend bei der kleinsten Versionsnummer, aus und schreibt den Spaß Verlauf in die Tabelle.

Wird irgendwann wieder einmal eine Migration angestoßen, schaut das Teil in der Tabelle nach dem Stand (Version) der DB und führt alle Skripte mit höherer Versionsnummer aus.

Funktioniert, hat aber den Nachteil, dass bei neuen DBs halt immer mit der kleinsten Versionsnummer begonnen wird.

Um das zu umgehen, kann man Baseline-Skripte erstellen. Das sind einfach Skripte, die alle notwendigen SQL-Anweisungen enthalten, um eine leere DB auf die im Namen des Skripts angegebene Versionsnummer zu bringen. Hat man also eine neue DB und ein Baseline-Skript B50__...sql, so wird dieses statt V1__...sql bis V50__...sql ausgeführt (vorausgesetzt, es gibt kein Baseline-Skript mit höherer Versionsnummer, versteht sich).

Für eine bestehende DB, die sich z. B. auf Version 47 befindet, ändert sich dadurch nix: dort werden weiterhin V48__...sql, V49__...sql und V50__...sql ausgeführt.

Das war es eigentlich auch schon.
 

Neue Themen


Oben