Лучший способ, который я видел, чтобы преодолеть проблемы с версией между ветвями, чтобы включить outOfOrder и использовать временную метку в качестве номера версии
По умолчанию большинство фреймворков миграции предпочитают ставить перед отдельными миграциями префикс целого числа, как в примере ниже. Когда платформа обнаруживает миграции, еще не примененные к текущей базе данных, она начинает с первой миграции, префикса которой нет в базе данных, и начинает применять их в возрастающем порядке.
- 1.0.0.1__add_customers_table.sql
- 1.0.0.2__add_email_address_column_to_customers_table.sql
- 1.0.0.3__add_orders_table_with_reference_to_customer_table.sql
Это отлично работает, когда все работают с одной и той же веткой кода. Однако, как только члены команды начинают работать над своими ветками, вероятность коллизии префиксов резко возрастает.
Но если вы решите использовать в качестве префикса для миграций временные метки, а не целые числа, вероятность столкновения практически исчезнет, даже между ветвями. Например, при использовании такого шаблона, как yyyyMMddHHmmssSSS, приведенные выше миграции теперь выглядят так…
- 1.0.0.20130704144750766__add_customers_table.sql
- 1.0.0.20130706132142244__add_email_address_column_to_customers_table.sql
- 1.0.0.20130706151409978__add_orders_table_with_reference_to_customer_table.sql
Приведенный выше образец временной метки имеет точность до миллисекунды. Хотя высокоточная временная метка может привести к затруднению чтения префиксов, чем точнее ваш префикс, тем меньше вероятность столкновения.
Для достижения наилучших результатов вы захотите автоматизировать создание этой временной метки, чтобы все члены вашей команды использовали согласованный формат.
Кроме того, обратите внимание, что Flyway также обрабатывает префиксы временных меток как целые числа. Это означает, что если вы изначально начали работать с Flyway, используя целые числа, вы все равно можете переключиться на временные метки в любой момент. Поскольку временные метки - это просто очень большие целые числа, первая миграция с префиксом временной метки будет просто применена после последней миграции с целочисленным префиксом.
Взято отсюда и немного изменено: http://www.jeremyjarrell.com/using-flyway-db-with-distributed-version-control/.
person
mad_fox
schedule
04.01.2016