Solange du keine Installationen hast geht das. Wenn du also sicherstellen kannst dass du immer mit einer leeren Datenbank ohne Schema anfängst und es auch sonst keine Installationen gibt. Wirklich nirgends.
Die Versionierung macht man um Konsistenz zu haben. Stell dir vor du hast eine Datenbank mit Schema in der Version 5. Gefüllt mit Daten. Und du änderst nun etwas an Skript für Version 1. Dann wird das wohl nie auf dieser Datenbank ausgeführt. Das Tool wird die allenfalls eine Fehlermeldung geben, dass der Hash des Skripts für Version 1 nicht mit dem Hash für das tatsächlich installierte Skript übereinstimmt. Und schon kannst du das manuell Nacharbeiten und eine Lösung dafür suchen.
Die Alternative wäre ein weiteres Skript mit einer neuen Version, das die Änderungen ausführt, so dass Anwendung und Schema immer zueinander Konsistent sind.
Nein, das wird sich kaum unterscheiden. Da sind die Rechner schnell genug und es wird ja nur das ausgeführt was neu dazu kommt. Wenn die DB in V 1000 vorliegt und du nun ein neues Skript hast, dann wird auch nur V 1001 ausgeführt, dass recht klein ist.
Der Vorteil der Konsistenz überwiegt weit mehr.
Ok prima, vielen Dank. Ich habe nun 2 stellen an denen ich Flyway aufrufe. Einmal für die “Admin-Datenbank” und einmal für die “Kundendatenbanken”
Kann man da irgendwie unterscheiden, welche Dateien in welcher Datenbank ausgeführt werden sollen? Denn ein Update zb "für User Spalte " soll dann nur für Admindatenbank sein, nicht aber für die Kundendatenbanken. Oder verwaltet man dann lieber die Admindatenbank selber, ohne Flyway? Macht wahrscheinlich mehr Sinn oder?
Je Datenbank verwendest du einfach einen separaten Satz an Scripten und lässt diese in der passenden Datenbank ausführen. Der Pfad, in welchem die Scripte gesucht werden lässt sich ebenso wie die Datenbankverbindung konfigurieren.