Ответ
Liquibase предоставляет несколько механизмов для отката (rollback) миграций базы данных.
1. Автоматический откат (для обратимых операций)
Для простых изменений (создание/удаление таблицы) Liquibase может сгенерировать откат автоматически.
<changeSet id="1" author="dev">
<createTable tableName="company">
<column name="id" type="int"/>
<column name="name" type="varchar(50)"/>
</createTable>
<!-- Автоматический откат будет: DROP TABLE company -->
</changeSet>
2. Ручное описание отката
Для сложных миграций (например, перенос данных) откат нужно описать явно в теге <rollback>.
<changeSet id="2" author="dev">
<addColumn tableName="company">
<column name="address" type="varchar(100)"/>
</addColumn>
<rollback>
<dropColumn tableName="company" columnName="address"/>
</rollback>
</changeSet>
3. Команды для выполнения отката
- Откат на N изменений:
liquibase rollback-count 3 - Откат до конкретной метки (tag):
liquibase rollback tag:"v1.0" - Откат до определённой даты:
liquibase rollback-to-date "2024-01-15"
Важно: Стратегия отката должна быть определена заранее. Не все изменения (особенно удаление данных) могут быть безопасно откатаны. Всегда тестируйте откат на staging-окружении.