Если я правильно понимаю ваш вопрос, есть два варианта:
Напишите preConditions
в существующие наборы изменений и укажите атрибут onFail = "MARK_RAN". Таким образом, все ваши наборы изменений потерпят неудачу на preConditions
и будут помечены как RAN в таблице CUSTOM_CHANGE_LOG
. Ваша заявка будет успешно запущена.
Укажите CUSTOM_CHANGE_LOG
таблицу и скопируйте все данные из databasechangelog
.
ChangeSet для копирования данных из таблица в таблицу может выглядеть так:
<changeSet id="foo" author="bar">
<preConditions onFail="MARK_RAN">
<tableExists tableName="databasechangelog"/>
<tableExists tableName="CUSTOM_CHANGE_LOG"/>
<sqlCheck expecterResult="0">
SELECT COUNT(*) FROM databasechangelog;
</sqlCheck>
</preConditions>
<sql>
INSERT INTO CUSTOM_CHANGE_LOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, EXECTYPE, MD5SUM, DESCRIPTION, COMMENTS, TAG, LIQUIBASE, CONTEXTS, LABELS, DEPLOYMENT_ID)
SELECT ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, EXECTYPE, MD5SUM, DESCRIPTION, COMMENTS, TAG, LIQUIBASE, CONTEXTS, LABELS, DEPLOYMENT_ID
FROM databasechangelog
</sql>
</changeSet>
Этот набор изменений должен выполняться первым при запуске приложения. Поэтому вы должны поместить этот набор изменений перед всеми другими наборами изменений в вашем списке изменений. После копирования всех данных liquibase должен обработать все ваши существующие наборы изменений так, как будто они уже выполнены.
Я бы использовал опцию № 1, поскольку ваши наборы изменений в любом случае должны иметь предварительные условия.