Добавить новый обратный вызов, например, beforeMigrate_V1.0.0.sql (новая функция) - PullRequest
0 голосов
/ 30 мая 2018

Мы знали, что были некоторые обратные вызовы в flyway: beforeMigrate, beforeEachMigrate, afterEachUndo ...

Наш проект должен исправить проблему в указанной версии sql, такой как V1.0.0, без изменения V1.0.0.sql.

Есть ли способ помочь нам?Должны ли мы поддерживать новое событие BEFORE_INDICATED_VERSION_MIGRATE для работы с новым файлом обратного вызова, таким как beforeMigrate_V1.0.0.sql ?

Взять для примера: мы пропустили

SET FOREIGN_KEY_CHECKS = 0;

в V1.1.0.sql, поэтому мы хотим отозвать его при миграции только до V1.1.0.sql.Поэтому мы добавляем ниже sql в beforeEachMigrate.sql:

SELECT version INTO @max_ver FROM `schema_version` ORDER BY version_rank DESC LIMIT 1;
SET FOREIGN_KEY_CHECKS = IF(@max_ver = "1.0.9", 0, @@FOREIGN_KEY_CHECKS);
SET FOREIGN_KEY_CHECKS = IF(@max_ver = "1.1.0", 1, @@FOREIGN_KEY_CHECKS);

В общем случае это работает.Но если мы добавим V1.0.9.1 однажды, это не сработает.Есть какие-нибудь идеи?

1 Ответ

0 голосов
/ 01 июня 2018

Хотя вы не можете сделать это, как вы предлагали, вы можете легко добавить файл V1.0.0.1__my_additional_change.sql, который будет автоматически применяться после 1.0.0 и до 1.0.1 при переносе базы данных.

...