Liquibase Noob снова ударяет - Ошибка на теге sqlFile - PullRequest
1 голос
/ 23 октября 2009

Я использую sqlFile, чтобы включить сценарий sql, который создает таблицы с помощью специальных команд оракула (NOCACHE, NO PARALLEL, и тому подобное). Мой файл 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>

Любые мысли будут высоко оценены. Заранее спасибо.

1 Ответ

7 голосов
/ 23 октября 2009

Я ничего не знаю о жидкой базе, но в этом прелесть 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, чтобы узнать, что еще вам может потребоваться объявить и т. Д. (Например, XSD позволяет дополнительно включать многие другие элементы, такие как validCheckSum, preContidtion и т. Д.)

...