2017-07-25 56 views
0

我試圖標記使用未來回滾,但得到以下錯誤的數據庫:無法標記使用Liquibase數據庫以備將來回滾

將更新到數據庫中。這可能需要幾分鐘的時間... 意外的錯誤運行Liquibase:解析pps​​db/ebidb_lb_upgrade_c43_sql_1.xml的第12行第6列時出錯:cvc-complex-type.2.4.a:找到以元素「sql」開頭的無效內容。 「{」「: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文件的文件頭,更換的1.9所有實例3.6

這裏是我最近的環境之一的例子:

<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時出現意外錯誤:解析pps​​db/ebidb_lb_upgrade_c43_plsql.xml的第6列136列:錯誤:schema_reference.4:無法讀取架構文檔'http://www.liquibase.org/xml /ns/dbchangelog/dbchangelog-3.6.xsd',因爲1)找不到文檔; 2)文件無法閱讀; 3)文檔的根元素不是。 –

+0

您使用的是什麼版本的liquibase罐子?您可能需要使用高於1.9(這是非常舊的)但小於3.6(這可能太新)。 – SteveDonie

+0

我們的liquibase版本是3.5.3。 –

0

我一直面臨着同樣的問題。在沒有任何喘息之餘尋找了一段時間後,我決定看看XSD,看看這些元素是如何聲明的。

根據Liquibase documentation link最新版本的XSD是3.1。

如果你看一下3.1 XSD,你可以看到changeSet允許的元素的tagDatabase和休息是互斥的(他們是XSD的一部分:CHOICE)

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

爲了測試我的理論,我創建一個新的changeSet只有tagDatabase元素,可以看到遷移是成功的,但顯然第二個changSet是唯一一個標籤爲發佈標籤。

因此,現在,我將執行DATABASECHANGELOG表的數據更新以更新標記列。

我希望liquibase傢伙出來一個新的XSD解決了這個問題。

相關問題