2017-07-25 19 views
0

私は将来のロールバックを使用しますが、エラーの下に取得するためのデータベースタグ付けしようとしているためLiquiBaseをを使用してデータベースにタグを付けることができません:将来のロールバック

データベースへの更新を適用します。これは数分かかる場合があります... Liquibaseを実行しているときに予期しないエラーが発生しました:ppsdb/ebidb_lb_upgrade_c43_sql_1.xmlの12行目6を解析中にエラーが発生しました:cvc-complex-type.2.4.a: 'sql'要素で無効な内容が見つかりました。 '{"http://www.liquibase.org/xml/ns/dbchangelog/1.9":modifySql} "のいずれかが必要です。

猫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> 

私は、ファイルからtagDatabaseタグを削除しています、私はすべてのエラーを取得していない午前:

は、ここに私のチェンジファイルです。 このタグを追加するときだけですが、上記のエラーが発生しています。 私が何かを見逃したり、ここで間違いがある場合は、私に知らせてください。

答えて

0

私は、あなたが非常に時代遅れのxsdを使用している可能性があると考えています。 XMLファイルのヘッダーには、ここで3.6

1.9のすべてのインスタンスを置き換える私の最近の環境の一つの例である:

<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

SteveDonieが提案したように変更されました。 tagDatabaseタグの有無にかかわらず、以下のエラーが発生する: Liquibaseを実行中に予期しないエラーが発生しました:ppsdb/ebidb_lb_upgrade_c43_plsql.xmlの6行目の解析でエラーが発生しました:schema_reference.4:スキーマ文書 'http://www.liquibase.org/xml /ns/dbchangelog/dbchangelog-3.6.xsd '、これは1)文書を見つけることができなかったためです。 2)文書を読むことができなかった。 3)文書のルート要素がではない。 –

+0

どのバージョンのliquibase jarを使用していますか?あなたは1.9(これは非常に古い)よりも高いものを使用する必要があるかもしれませんが3.6より少ない(これは新しいかもしれません)。 – SteveDonie

+0

私たちのliquibaseバージョンは3.5.3です。 –

0

私は同じ問題に直面していました。何の猶予もなしにしばらくの間検索した後、私はXSDを見て要素がどのように宣言されたかを見てみることにしました。

Liquibase documentation linkに従って、XSDの最新バージョンは3.1です。

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

私が作成した私の理論をテストするには:あなたが3.1 XSDを見れば

、あなたはchangeSet許さ要素のtagDatabase、残りは(CHOICE彼らは、XSDの一部である)相互に排他的であることがわかりますtagDatabaseという要素を持つ新しいchangeSetがあり、移行が成功したことが分かりましたが、明らかに2番目のchangSetがリリースタグでタグ付けされた唯一のものでした。

ここでは、DATABASECHANGELOGテーブルのデータ更新を行い、タグ列を更新します。

私はliquibase人がこの問題を解決する新しいXSDを出すことを願っています。