Flyway - сбрось БД, создай БД - PullRequest
0 голосов
/ 11 июля 2011

У меня есть 2 файла: структура базы данных и файлы данных базы данных. (мы еще не участвуем в проекте, в котором мы создаем измененные файлы).

Есть ли способ выполнить запуск этих файлов перед сборкой каждый раз, если какой-либо из них был изменен с помощью maven?

Единственная идея, которую я имею, - переименовывать файлы (выводить версию) после каждого изменения в них, убедившись, что flyaway подберет их.

Есть ли более разумный способ, возможно, с использованием API или какого-то другого "трюка"?

Спасибо

- MB

Ответы [ 2 ]

6 голосов
/ 15 июля 2011

Вы можете использовать миграцию по маршруту с помощью следующей конфигурации

validationMode=ALL
validationErrorMode=CLEAN

Для каждой миграции sql контрольная сумма CRC32 вычисляется при выполнении сценария sql. Механизм проверки проверяет, имеет ли миграция sql в пути к классам ту же контрольную сумму, что и миграция sql, уже выполненная в базе данных.

validationErrorMode = CLEAN предназначен исключительно для удобства разработки. Даже несмотря на то, что мы настоятельно рекомендуем не изменять сценарии миграции после того, как они были проверены в SCM и запущены, это обеспечивает способ беспрепятственного решения этого случая. База данных будет очищена автоматически, гарантируя, что при следующей миграции вы вернетесь в состояние, зарегистрированное в SCM.

Эту конфигурацию можно использовать из API, плагин maven или командная строка .

0 голосов
/ 25 апреля 2014

С более новым Flyway, вы бы использовали

flyway.setInitOnMigrate(true);
flyway.setCleanOnValidationError(true);
flyway.setValidateOnMigrate(true);

Чтобы отбросить все, если контрольная сумма файла изменяется или отсутствует таблица версий.

...