2016-08-25 3 views
0

Я следующий набор изменений, используя LiquiBase 3.5.1 (последний):LiquiBase Предпосылка MARK_RAN Не действует

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

    <preConditions onFail="MARK_RAN"> 
     <sqlCheck expectedResult="2">SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo';</sqlCheck> 
    </preConditions> 
    <changeSet author="user" id="base"> 
     <sqlFile path="liquibase/base.sql"/> 
    </changeSet> 
</databaseChangeLog> 

Кажется достаточно просто, не так ли? Идея состоит в том, что он проверяет, не является ли БД пустым (проверка на наличие двух таблиц для автоматически генерируемых таблиц Liquibase), и если это так, запустите базовый скрипт. Однако, если он не работает, он должен отметить набор изменений как выполненный и перемещенный (документация для функции here). Тем не менее, я получаю следующее сообщение об ошибке:

Value 'MARK_RAN' is not facet-valid with respect to enumeration '[HALT, WARN]'. 
+0

Checkout мой ответ [здесь] (http://stackoverflow.com/a/39223493/332248). Короткий ответ: «MARK_RAN» недоступен на уровне изменений. Только на наборах изменений. – Jens

ответ

0

LiquiBase различает предпосылки на уровне журнала изменений и предусловия на уровне изменений. Вне набора изменений (например, в начале журнала изменений) возможны только значения HALT и WARN.

Посмотрите на XSD schema

Есть два типа: onChangeSetPreconditionErrorOrFail и onChangeLogPreconditionErrorOrFail

Вы можете просто изменить свой сценарий следующим образом:

<changeSet author="user" id="base"> 
    <preConditions onFail="MARK_RAN"> 
    <sqlCheck expectedResult="2">SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo';</sqlCheck> 
    </preConditions> 
    <sqlFile path="liquibase/base.sql"/> 
</changeSet> 

 Смежные вопросы

  • Нет связанных вопросов^_^