2017-07-25 1 views
0

Ich versuche, die Datenbank für die Zukunft zum Zurücksetzen aber immer unterhalb Fehler markieren, zu markieren:kann nicht die Datenbank mit Liquibase für zukünftiges Rollback

Anwenden von Aktualisierungen der Datenbank. Dies kann einige Minuten dauern ... Unerwarteter Fehler beim Ausführen von Liquibase: Fehler beim Analysieren von Zeile 12 Spalte 6 von ppsdb/ebidb_lb_upgrade_c43_sql_1.xml: cvc-complex-type.2.4.a: Ungültiger Inhalt wurde gefunden, beginnend mit dem Element 'sql'. Einer von '{"http://www.liquibase.org/xml/ns/dbchangelog/1.9": modifySql} wird erwartet.

Hier ist meine ChangeSet Datei:

Katze ebidb_lb_upgrade_c43_sql_1.xml

<?xml version="1.0" encoding="UTF-8"?> 
<databaseChangeLog 
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9 
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd"> 
<changeSet author="avnish_plsql_upgrade" id="1"> 
<tagDatabase tag="version_1.3"/> 
<sql 
     stripComments="false" 
> 
create table test (id number); 
</sql> 
</changeSet> 
</databaseChangeLog> 

Wenn ich tagDatabase Tag aus Datei bin zu entfernen, ich bin kein Fehler. Nur wenn ich dieses Tag hinzufüge, erhalte ich den obigen Fehler. Bitte lassen Sie mich wissen, wenn ich etwas vermisse oder hier einen Fehler mache.

Antwort

0

Ich denke, das Problem kann sein, dass Sie eine sehr veraltete xsd verwenden. In der Kopfzeile der XML-Datei, ersetzen Sie alle Instanzen von 1.9 mit 3.6

Hier ist ein Beispiel von einem meiner letzten Umgebungen:

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

Änderungen vorgenommen, wie von SteveDonie vorgeschlagen. Unterer Fehler mit oder ohne tagDatabase-Tag: Unerwarteter Fehler beim Ausführen von Liquibase: Fehler beim Parsing von Zeile 6 Spalte 136 von ppsdb/ebidb_lb_upgrade_c43_plsql.xml: schema_reference.4: Fehler beim Lesen des Schemadokuments 'http://www.liquibase.org/xml /ns/dbchangelog/dbchangelog-3.6.xsd ', weil 1) das Dokument nicht finden konnte; 2) das Dokument konnte nicht gelesen werden; 3) Das Wurzelelement des Dokuments ist nicht . –

+0

Welche Version der Liquibase-Gläser verwenden Sie? Sie müssen möglicherweise etwas höher als 1.9 (was sehr alt ist) verwenden, aber weniger als 3.6 (die möglicherweise zu neu sind). – SteveDonie

+0

Unsere liquibase Version ist 3.5.3. –

0

ich das gleiche Problem konfrontiert worden war. Nachdem ich eine Weile ohne Pause gesucht hatte, entschied ich mich, einen Blick auf die XSD zu werfen und zu sehen, wie die Elemente deklariert wurden.

Gemäß Liquibase documentation link ist die neueste Version von XSD 3.1.

Wenn man sich die 3.1 XSD anschaut, kann man sehen, dass die tagDatabase und der Rest der changeSet erlaubt Elemente gegenseitig ausschließen (Sie sind ein Teil von XSD: CHOICE)

<xsd:choice> 
       <xsd:element ref="tagDatabase" maxOccurs="1"/> 
       <xsd:group ref="changeSetChildren" minOccurs="0" maxOccurs="unbounded"/> 
</xsd:choice> 

Um meine Theorie zu testen Ich habe ein neues changeSet mit nur dem tagDatabase Element und konnte sehen, dass die Migration erfolgreich war, aber offensichtlich war die zweite changSet die einzige, die mit dem Tag Release versehen war.

Ich mache jetzt eine Datenaktualisierung der Tabelle DATABASECHANGELOG, um die Tagspalte zu aktualisieren.

Ich hoffe Liquibase Jungs kommt mit einer neuen XSD, die dieses Problem behebt.

Verwandte Themen