Wie komme ich zu Flyway, um die Migration erneut auszuführen?

8

UNSER SYSTEM

Wir versuchen, Migrationen als .sql-Dateien unter Versionskontrolle zu setzen. Entwickler würden eine VN __ *. Sql-Datei schreiben, an die Versionskontrolle übergeben und ein Job, der alle 5 Minuten ausgeführt wird, würde automatisch in eine Dev- und Test-Datenbank migrieren. Sobald sich herausstellte, dass die Änderung keine Probleme verursachte, führte ein anderer Benutzer einen manuellen Job aus, um die Migration für die Produktion auszuführen.

MEIN PROBLEM:

Ich hatte eine Demo-Migration, die ein paar Tabellen erstellt hat. Ich habe V4__DemoTables.sql in Versionskontrolle auf meinem PC überprüft.

In unserer Linux-Box hat ein Job, der alle 5 Minuten ausgeführt wird, die neue Datei aus der Versionskontrolle extrahiert und dann die Datei "flyway.sh" ausgeführt. Es hat die Datei erkannt und ausgeführt.

Aber die .sql Datei hatte einen Tippfehler. Und wir verwenden Neteeza, das Probleme mit der automatischen Migration einer Migration in einem BEGIN TRAN ... END TRAN hat. Also hat die Migration 2 Tabellen erstellt und vor dem dritten abgebrochen.

Kein Problem, dachte ich. Ich habe die 2 Tabellen gelöscht, die die .sql-Datei erstellt hat. Checked V4__ außerhalb der Versionskontrolle, behob den Tippfehler und reichte ihn erneut ein.

Fünf Minuten später wurde das Update extrahiert, aber flyway beschwert sich, dass die Prüfsumme nicht übereinstimmt. Daher wird die aktualisierte V4__DemoTables.sql-Datei NICHT ausgeführt.

Wie kann ich die aktualisierte Datei akzeptieren und die Prüfsumme in der SCHEMA_VERSION-Datei im Falle eines Tippfehlers aktualisieren?

Wenn ich die Dokumente lese, scheint es, als hätten die Entwickler vorgeschlagen, dass ich eine neue V4_1_DemoTables.sql-Datei mit den Fixes erstellt haben sollte. Dies hätte jedoch mit den Befehlen in der V4__-Datei kollidiert, so dass dies falsch schien.

Hier ist also, was die Dokumente implizieren müssen:

  • Verlassen Sie V4__ als 'erfolgreiche' Migration gemäß SCHEMA_VERSION-Tabelle.

    Erstellen Sie V4_1_, um die Tabellen zu löschen, die vor dem Tippfehler erstellt wurden Zeile in V4 __.

    Erstellen Sie V4_2_, das den Tippfehler aus der ursprünglichen Datei enthält, um alles zu tun die echte Arbeit.

Stimmt das?

    
Bob Mac 24.07.2012, 18:19
quelle

1 Antwort

11

Wenn die Migration erfolgreich abgeschlossen wird , aber einige der db-Objekte noch nicht ganz korrekt sind (Tippfehler im Spaltennamen, ...), tun Sie, was Sie gesagt haben, und drücken Sie follow- up-Skript , das es behebt (Spalte umbenennen, ...).

Wenn die Migration fehlschlägt und auf einer DB mit DDL-Transaktion nicht ausgeführt wurde, muss die DB manuell bereinigt sein. Das bedeutet:

  • Zurücksetzen der Auswirkungen der Migration auf die DB
  • Entfernen Sie die Version aus der SCHEMA_VERSION-Tabelle und markieren Sie die vorherige als aktuelles

Dieser zweite Schritt wird in Zukunft mit der Einführung der flyway.repair ( ) Befehl .

    
Axel Fontaine 24.07.2012 19:05
quelle

Tags und Links