Использование liquibase v3.6.3 на MySQL.Если я правильно понял, каждый CHANGESET по умолчанию запускается в транзакцию SQL.Тем не менее, мне кажется, что транзакции совершаются на основе ИЗМЕНЕНИЯ.При запуске этого сценария
databaseChangeLog:
- changeSet:
id: changeset-
changes:
- renameTable:
oldTableName: old_table
newTableName: new_table
- addColumn:
columns:
- column:
name: test_column_name
type: varchar(255)
tableName: other_table
Если тег addColumn завершается ошибкой из-за какого-то исключения SQL (например, проверки ограничений или других), таблица базы данных exchangechange не будет обновлена, чего я не ожидаю, так какне удалось изменитьТем не менее, первый оператор DID прошел, и моя таблица теперь называется new_table .
Конечно, если я исправлю проблему, вызвавшую сбой второго, и повторите попытку обновления, произойдет сбой, потому чтоold_table больше не существует.
Мне известен этот параграф в документации по liquibase
Liquibase пытается выполнить каждый changeSet в транзакции, которая фиксируется в конце, илиоткатился, если есть ошибка.Некоторые базы данных будут автоматически фиксировать операторы, которые вмешиваются в эту настройку транзакции и могут привести к неожиданному состоянию базы данных.Поэтому, как правило, лучше иметь только одно изменение на набор изменений, если только не существует группы изменений без автоматической фиксации, которые вы хотите применить в качестве транзакции, такой как вставка данных.
https://www.liquibase.org/documentation/changeset.html
но я не очень понимаю это.Автоматическая фиксация означает автоматическую фиксацию транзакции.Если все изменения включены в транзакцию, почему проходят только некоторые изменения?Должен ли liquibase откатить всю транзакцию?
Есть ли лучшие практики для этого?Разве мы не можем вручную устанавливать транзакции в жидкости?