Удалить миграцию в пролете - PullRequest
0 голосов
/ 04 мая 2018

Возникает следующая проблема:

org.flywaydb.core.api.FlywayException: Validate failed: Detected applied migration not resolved locally: 1.44

Это произошло, когда я понял, что данные, которые я добавил в 1.44, являются недействительными, и я не хочу иметь дело с ними в старых средах, но в новых средах я не хочу этих данных. Мне нужны данные, которые я буду вставлять при новой миграции (например, 1.48).

  • Если я изменю старую миграцию, она не удастся выполнить в старых envs из-за контрольной суммы;
  • Если я оставлю это, в новых envs у меня будут недействительные данные от 1.44;

Как я могу удалить его, чтобы выполнить то, что мне нужно, а не получить ошибку? Какой правильный путь?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Вы можете ОТМЕНИТЬ Вашу миграцию: ОТМЕНИТЬ миграционный путь

0 голосов
/ 04 мая 2018

Этот вопрос относится к Наилучшая практика: Как изменить сценарий миграции пролетного пути после его использования

Основной ответ: не удаляйте, как только он был применен

Неважно, если в процессе миграции какое-то промежуточное состояние не совсем то, что вам нужно, если последнее (в вашем случае 1,48) верно.

Теперь, если вам действительно нужно удалить эту миграцию, спросите себя, может ли замена ее пустым файлом также выполнить эту работу. Если да, то вы можете последовать совету, который я дал здесь: https://stackoverflow.com/a/35491545/350428

Теперь, если этого все еще недостаточно, и вам действительно нужно удалить эту миграцию, удалите файл и исправьте таблицу flyway_schema_history вручную, чтобы снова сделать ее согласованной. Это подвержено риску и должно быть абсолютным последним средством.

...