У db-maintain есть понятие повторяемых скриптов, таких как хранимые процедуры/триггеры. Когда есть изменения к такому сценарию, его нужно снова выкатить. Flyway, похоже, всегда проверяет соглашение об имени файла. Поэтому, чтобы иметь повторяющийся скрипт, нам может понадобиться переименовать файл. Есть ли более эффективный способ сделать это?Использование пролетного пути для эффективного управления повторяемыми сценариями
ответ
Flyway начал поддерживать повторяющиеся миграции в версии 4.0. Повторяющиеся миграции повторно применяются каждый раз, когда их контрольная сумма изменяется и может поддерживаться как отдельные файлы в управлении версиями.
Вы несете ответственность за то, чтобы одна и та же повторяющаяся миграция могла применяться многократно. . Обычно это связано с использованием предложений CREATE или REPLACE в ваших заявлениях DDL.
Подробнее here.
Эта проблема возникла в Issue Tracker и в этом other question.
В настоящее время нет поддержки из-за этого.
Лично я бы
- пакет повторяющегося действия в хранимой процедуре или триггере и добавить его в базу данных как часть регулярной миграции
- убедитесь, что эта процедура/триггер получает вызывается один раз в миграции после что (может быть всего лишь одной строки заявление)
- обеспечить изменения в процедурах/триггер необходимых после этого также произойдет в рамках регулярных миграций
Если это не так, не стесняйтесь снимать Issue и комментировать подробности о вашем прецеденте.
Обновление: Повторяющиеся скрипты теперь полностью поддерживаются с Flyway 4.0. См. https://flywaydb.org/documentation/migration/repeatable
- 1. Расширение CDI для пролетного пути
- 2. Репозиторий P2 для пролетного пути
- 3. Миграция пролетного пути с java
- 4. Изменение базовой записи для пролетного пути
- 5. Инструменты для эффективного управления информацией?
- 6. новая версия пролетного пути - ошибка sql
- 7. настройки SQL SET при использовании пролетного пути
- 8. Рекомендации по использованию пролетного пути для миграции не-db?
- 9. с использованием пролетного пути для исправления нескольких идентичных схем
- 10. Алгоритм эффективного управления ресурсами соединения
- 11. XSLT использование эффективного селектора
- 12. Эффективного использование Perl хэш
- 13. Использование препроцессора C для эффективного переименования переменных
- 14. Использование некластеризованного индекса для эффективного поиска
- 15. Использование мутирует() для эффективного создания данных кадра
- 16. Использование бетона Zend_Db_Table_Abstract для эффективного перебора строк
- 17. Обновление версии пролетного пути от 1,5 до 3,2
- 18. Загрузка таблиц справочных данных с использованием пролетного пути
- 19. Очистить базу данных при запуске при использовании пролетного пути
- 20. Управление несколькими базами данных с плагином перехода градиента пролетного пути
- 21. Весенняя загрузка: загрузка спящего режима и пролетного пути
- 22. Сделать строковые значения NumberPicker повторяемыми
- 23. gradlew не возвращает статус ошибки команды пролетного пути
- 24. Oracle Ошибки синтаксис в командной строке при использовании пролетного пути
- 25. Назад к схеме dafault после миграции пролетного пути
- 26. Как управлять порядком выполнения повторяющихся сценариев пролетного пути
- 27. Алгоритм для создания наиболее эффективного неориентированного гамильтонова пути
- 28. Алгоритм для наиболее эффективного пути через простую двумерную карту
- 29. Публикация таблицы Панель управления с R сценариями для сервера
- 30. Scala Как использовать аккеры аккеры для эффективного управления временем выключения
Просто из любопытства: не могли бы вы более подробно описать свой прецедент? –
Идея состоит в том, чтобы поддерживать хранимые процедуры и триггеры, так же, как мы поддерживаем код. Если изменения должны быть изменены, вы просто меняете файл, поэтому контрольная сумма отличается, и скрипт снова отображается в db. Обеспечение подлинности сценария, естественно, должно быть до разработчика. например: в MySQL; разработчик должен убедиться, что перед CREATE триггером или блоком процедуры есть оператор DROP IF EXISTS. – gazal
Спасибо. Я понимаю, откуда вы сейчас. Триггеры и хранимые процедуры являются объектами базы данных, такими как все остальные, и поэтому я считаю, что они должны следовать нормальным шаблонам миграции. –