Контекстный откат с помощью fluentmigrator

Fluentmigrator отслеживает, какие миграции были применены к базе данных, и это здорово, однако, похоже, нет сценария, в котором вы могли бы выполнить откат к текущей версии в базе данных.

Итак, если я уже применил 5 миграций (при условии последовательного идентификатора для миграций), я буду использовать версию 5 в БД, поэтому, если у меня есть еще 5 миграций (до 10) и я выполняю предварительный просмотр, кажется знать, что ему нужно применить 6-10, и это здорово, но предварительный просмотр развертывания, похоже, не знает, что ему нужно отменить 10-6.

CLI говорит, что задача rollback по умолчанию откатывает 1 шаг, и если бы вы выполняли migrate:down без определенного version, она откатывала бы ВСЕ миграции (при условии, что до версии 0), поэтому есть ли способ заставить ее откатить все версии до что находится в БД на тот момент?


person Grofit    schedule 20.07.2017    source источник


Ответы (1)


Это невозможно, единственный способ «кажется» узнать, что нужно применить только 6-10, - это потому, что fluent migrator создает таблицу в вашей базе данных с записями каждой миграции, примененной к вашей базе данных. Итак, в вашем сценарии есть пять строк, последняя из которых — миграция пять.

Когда вы запускаете Fluent migrator, он проверяет эту таблицу, чтобы узнать, какие миграции он должен применить, поэтому он знает, что вы остановились на пяти, а затем применяет от 6 до 10.

Сейчас наоборот в готовом виде невозможен, так как нет контекста с примененными миграциями, определенного момента времени.

Однако вы переопределяете поведение функции down, например, чтобы проверить, должна ли эта конкретная миграция запускать функцию down на основе числа, которое вы храните в другом месте, где это число будет представлять ваш конкретный момент времени.

person Tarek    schedule 18.09.2017