2015-03-12 9 views

Antwort

6

Sie müssten es ein wenig hacken, um es zur Arbeit zu bringen, also empfehle ich diesen Ansatz nicht, aber es würde in Not arbeiten.

Ich habe das nur mit Maven getestet, aber ich bin mir ziemlich sicher, dass es auch mit Gradle funktionieren würde.

  1. migrieren, bis die Version vor der einen nach oben angewendet, die Sie manuell

    # Assuming you applied 01.002 manually 
    $ mvn flyway:migrate -Dflyway.target=01.001 
    
  2. eine Zeile für das Skript Legen Sie

    angewendet
    -- 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); 
    
  3. Reparatur der schema_version Prüfsumme

    $ mvn flyway:repair 
    
  4. Bewerben
  5. die anderen Migrationen

    $ mvn flyway:migrate -Dflyway.validateOnMigrate=false -Dflyway.outOfOrder=true 
    

Die beiden -D Eigenschaften es nicht notwendig sein kann, je nachdem, ob Sie bekam die insert richtig ist oder nicht. Flyway kann beispielsweise mit Ihrer Skriptbeschreibung nicht einverstanden sein, selbst wenn die Prüfsumme jetzt korrekt ist.

+0

dieser Ansatz funktioniert für mich. – hidekuro

+0

Irgendwann ist es nicht mehr erforderlich, ein präpariertes 'insert' einzufügen (zum Beispiel, wenn das Upgrade-Skript beim Hinzufügen einer vorhandenen Spalte oder beim Löschen einer bereits entfernten Tabelle fehlgeschlagen ist). Lassen Sie Flyway einfach scheitern und korrigieren Sie die letzte Zeile, indem Sie 'success = 1' setzen. Sie können am Anfang des Aktualisierungsskripts einen sicheren Fehler mit Müll machen (der weitere möglicherweise gefährliche Aktionen verhindert). Entfernen Sie einfach Müll vor 'flyway: repair' – gavenkoa

0

Nicht empfohlen Aber wenn Sie wollen immer noch:

1) Run flywayMigrate, lassen Sie die Migration fehlschlagen.
2) Aktualisieren Sie manuell die Flyway-Meta-Tabelle (Erfolgsspalte) für die jeweilige Version der Migration.
3) Führen Sie flywayMigrate erneut aus.
4) Fertig, der Flugweg beginnt jetzt mit der nächsten Version der Migration.

Verwandte Themen