2017-03-01 1 views
3

Ich benutze Liquibase Hibernate-Erweiterung, um DiffChangeLogFile gegen meine Datenbank und mein Modell zu generieren. Das Problem ist, wenn ich es mit Maven ausführen und es gibt einige Änderungen im Modell, Liquibase die generierten ChangeSets an den alten DiffChangeLogFile Inhalt anhängen, so bekomme ich ein Viele wiederholte ChangSets, nicht mit der gleichen ID, aber mit dem gleichen Inhalt. Ich weiß, dass es kein Problem für das Update sein wird, da Liquibase wiederholte changeSets überspringt, aber ich möchte, dass jedes Mal, wenn ich Maven Diff Ziel, Liquibase lösche den alten Inhalt meiner DiffChangeLogFile und legte den neuen.Warum liquibase neue Änderungen an den vorhandenen Inhalt von diffChangelog anhängen?

Antwort

1

Das ist im Grunde der Zweck des Befehls diff. Wenn Sie ein neues Änderungsprotokoll generieren möchten, sollten Sie den Befehl generateChangeLog verwenden.

+0

eine andere Frage plz: Wenn ich Liquibase mit Java benutze, wie kann ich einen inputStream oder eine Zeichenkette anstelle eines changelogfile Pfades in der Update Methode übergeben? ist das möglich ? – elpazio

+0

Sie müssten wahrscheinlich Ihre eigenen "Integrations" -Klassen schreiben, um das zu können. Ich denke nicht, dass es einen Weg gibt, dies unter Verwendung der vorhandenen Integrationen zu machen (d. H. Befehlszeile, Maven, etc.). Außerdem identifiziert Liquibase Änderungsmengen mit drei Werten - der ID, dem Autor und dem Pfad. Wenn Sie also zwei Changesets haben, die "funktional äquivalent" sind, aber unterschiedliche IDs haben, werden Sie Probleme haben, sie zu deployen. – SteveDonie

Verwandte Themen