2009-10-23 2 views
1

sqlFile을 사용하여 oracle 특정 명령 (NOCACHE, NO PARALLEL 등)을 사용하여 테이블을 만드는 sql 스크립트를 포함하고 있습니다. master.xml 파일에는 모든 sql 스크립트가 포함되어 있으며 실행됩니다. 그러나 태그를 발견하면 실패하고이 오류 메시지를 인쇄합니다.Liquibase noob가 다시 공격 - sqlFile 태그에 오류가 발생했습니다.

C:\update.bat master.xml 
Migration Failed: cvc-complex-type.2.4.a: Invalid content was found starting with element 'sqlFile'. 
One of '{ 
"http://www.liquibase.org/xml/ns/dbchangelog/1.9":preConditions, 
"http://www.liquibase.org/xml/ns/dbchangelog/1.9":property, 
"http://www.liquibase.org/xml/ns/dbchangelog/1.9":changeSet, 
"http://www.liquibase.org/xml/ns/dbchangelog/1.9":include, 
"http://www.liquibase.org/xml/ns/dbchangelog/1.9":includeAll 
}' is expected. 

내 master.xml은 어떤 생각이 크게 감사합니다

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<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"> 

    <sqlFile path="createUsers.sql"/> 
</databaseChangeLog> 

매우 간단합니다. 미리 감사드립니다.

답변

7

저는 liquibase에 대해 아무것도 모릅니다. 그러나 은 XML 스키마의 아름다움입니다. XSD를 읽음으로써 우리는 systemChangeLog를 제공 할 때 시스템이 기대하는 바를 추정 할 수 있습니다.

당신이 XSD를 보면, 오류 메시지에보고 된 것을 효과적으로 <databaseChagneLog> 요소가 ... 열거 된 요소 (<preCondition>, <property>, <changeSet> 등의 포함해야 볼 수 있습니다. 그것은 나타납니다

(에서 . <sqlFile> 요소가 <changeSet>에 포함되어야 함)을 XSD를 읽고

을 그래서 어쩌면 당신은 필요

... Header + databaseChangelog and its Namespace =as previously 
... 
    <changeSet> 
     <sqlFile path="createUsers.sql"/> 
    </changeSet> 
</databaseChangeLog> 

그러나 내가 말했듯이, 나는 기본적인 의미론이나 심지어는 일반적인 목적의 liquibase를 모른다. 따라서 liquibase 문서를 참조하여 신고해야 할 기타 사항을 알아볼 수 있습니다 (예 : XSD에서 validCheckSum, preContidtion 등의 다른 많은 요소를 선택적으로 포함 할 수 있음)

+0

감사합니다. xsd를 읽는 것이 이제는 "sh * t가 발생했을 때 할 일"에 있습니다. – Tom

+2

changeSet 태그에 "id"및 "author"속성이 필요합니다. 좋아요 :

관련 문제