1

sqlFile を使用して、Oracle 固有のコマンド (NOCACHE、NO PARALLEL、そのようなもの) を使用してテーブルを作成する SQL スクリプトを含めます。私の master.xml ファイルには、すべての SQL スクリプトが含まれており、それらを実行します。ただし、タグを検出すると失敗し、このエラー メッセージが出力されます。

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>

どんな考えでも大歓迎です。前もって感謝します。

4

1 に答える 1

8

私はliquibaseについて何も知りませんが、それがXMLスキーマの美しさです。XSDを読み取ることで、databaseChangeLogを提供するときにシステムが何を期待するかを推測できます。

XSDを見ると、エラーメッセージで報告されているように、要素にはリストされている要素(、、など...)が効果的に含ま<databaseChagneLog><preCondition>ていることがわかります。<property><changeSet>

(XSDを読むと)<sqlFile>要素はに含まれている必要があるよう<changeSet>です。

だから多分あなたはただ必要です:

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

しかし、言ったように、私は根底にあるセマンティクスについても、liquibaseの一般的な目的についても何も知りません。したがって、liquibaseのドキュメントを参照して、他に何を宣言する必要があるかなどを確認できます(たとえば、XSDでは、validCheckSum、preContidtionなどの他の多くの要素をオプションで含めることができます)

于 2009-10-23T15:43:17.407 に答える