Я искал Flyway
в качестве инструмента миграции базы данных.Flyway: запуск нескольких миграций за одну транзакцию
Единственное, что мне не удалось найти однозначный ответ на следующий:
Может ли я заставить пролетный путь, чтобы выполнить все, как-из-: еще непримененных миграций в одной транзакции, вместо того, чтобы каждый миграции быть собственной сделкой?
В среде разработчиков это не проблема, но в производственной среде, где вы потенциально могли бы выполнять несколько миграций от одного обновления к другому, одна из неудачных миграций оставила бы базу данных в состоянии «полумигрированного», где некоторые миграции были совершены, а некоторые - не совсем плохие.
Обходной бы просто втиснуть все SQL, необходимые в одном файле, но есть проблемы с этим:
Производственные миграции и Dev миграции будет в конечном итоге выполняется по-разному, так как вы не можете заранее знать, что будет в миграции на среду разработчиков. Думаю, вы всегда можете сделать чистую, а затем новую миграцию, но это, похоже, противоречит духу дизайна пролетного пути в отношении дополнительных миграций.
Контрольные суммы будут отличаться, как только будет добавлено новое изменение.
Неужели Flyway не поддерживает такую функцию? Ли Liquibase или любой другой инструмент миграции?
Liquibase пытается запустить каждый changeSet в транзакции. Вероятно, вы можете использовать команду updateSql для генерации SQL-файла и последующей обработки для настройки требуемого поведения транзакции и после ее применения с помощью некоторого инструмента. Этот трубопровод может быть реализован для dev/prod, чтобы избежать проблем, связанных с продуктами. – dbf