Frage

Im Anschluss an die Schnellstart auf liquibase i ein changeset erstellt haben (sehr dumm :))

Code:

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.6"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.6
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.6.xsd">

    <changeSet id="1" author="me">
        <createTable tableName="first_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
        </createTable>
        <createTable tableName="new_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
        </createTable>
    </changeSet>

</databaseChangeLog>

Ich habe ein sauberes Schema erstellt, und ich habe den Migrate Befehl gestartet.

Liquibase erstellt die Datenbank, mit der Unterstützung Tabellen databasechangelog und ..lock.

Nun, wie kann ich die Änderungen verfolgen ?? Ich habe die changeset das Hinzufügen eines neuen Elements modifiziert create, aber wenn ich den Befehl „update“ versuchen liquibase sagt mir dieses

Migration Failed: Validation Failed:
     1 change sets check sum

Ich denke also nicht über die Art und Weise mit Liquibase zu arbeiten verstanden zu haben.

Jemand kann mich in die richtige Richtung ??

Danke

War es hilfreich?

Lösung

Sie sollten niemals ein <changeSet> ändern, die bereits durchgeführt wurde. Liquibase berechnet Prüfsummen für alle ausgeführten Changesets und speichert sie im Protokoll. Es wird dann die Prüfsumme neu berechnen, vergleichen Sie sie mit den gespeicherten Einsen und nicht das nächste Mal, wenn Sie es laufen, wenn die Prüfsummen unterscheiden.

Was müssen Sie stattdessen zu tun ist hinzuzufügen eine andere <changeSet> und setzen Sie Ihre neue create Element darin.

Quick gut readin ist, aber es ist in der Tat schnell :-) die vollständige rel="noreferrer">, insbesondere seine ChangeSet Abschnitt.

Andere Tipps

Diese derzeit akzeptierte Antwort ist etwas veraltet, basierend auf Änderungen in Liquibase 2.x. In der 2.x-Version wird noch Liquibase fehlschlagen, wenn das MD5-Prüfsumme für einen changeset geändert hat, aber Sie können das runOnChange Attribut angeben, wenn Sie es ändern können, wollen.

Von der Dokumentation :

  

runOnChange - Führt die Änderung zum ersten Mal zu sehen, und jedes Mal, wenn der Wechselsatz wird geändert

Wenn es eine Änderung an einem changeset, die hat im Grunde schon geschehen ist, können Sie die Datenbank manuell ändern, so dass seine md5 für das Changeset die neue übereinstimmt. Geeignet für kleinere Textänderungen. Oder Sie können diese changeset Zeile aus Ihrer Tabelle löschen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top