Я следующий набор изменений, используя 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]'.
Checkout мой ответ [здесь] (http://stackoverflow.com/a/39223493/332248). Короткий ответ: «MARK_RAN» недоступен на уровне изменений. Только на наборах изменений. – Jens