В настоящее время я работаю, чтобы получить версию Flyway 3.0 до 4.2.0, и у меня возникли некоторые проблемы при переходе с 3.0 -> 4.2.0.До сих пор я вытащил зависимость 4.2.0 и обновил переименованные поля конфигурации.
При просмотре документов и проблем миграции Flyway показалось, что когда пользователь запускает flyway на версии 4.2.0, контрольные суммы обновляются автоматически.Я предполагал, что это означает, что flyway migrate
или любые соответствующие команды будут запускать это обновление через документацию:
Flyway 4.0 теперь игнорирует окончания строк, когда при вычислении контрольных сумм все существующие контрольные суммы в вашей таблице метаданных будут автоматически корректируется при первом запуске , чтобы быть совместимым с этим новым алгоритмом.
Однако контрольные суммы не обновлялись при выполнении миграции с миграционного пути.В качестве обходного пути я нашел полезную команду repair
, которая изменяет значения контрольной суммы миграции из старой версии в новую версию, и запустил следующую команду:
flyway repair -user=user -password=password -url=jdbc:mysql://127.0.0.1:3306/db -table=db_migrations
Flyway 4.2.0 by Boxfuse
Database: jdbc:mysql://127.0.0.1:3306/db_migrations (MySQL 5.6)
Repair of failed migration in metadata table `db_migrations`.`schema_version` not necessary. No failed migration detected.
Successfully repaired metadata table `db_migrations`.`schema_version` (execution time 00:00.005s).
Manual cleanup of the remaining effects the failed migration may still be required.
Database: jdbc:mysql://127.0.0.1:3306/db_migrations (MySQL 5.6)
Repair of failed migration in metadata table `db_migrations`.`schema_version` not necessary. No failed migration detected.
Successfully repaired metadata table `db_migrations`.`schema_version` (execution time 00:00.004s).
Manual cleanup of the remaining effects the failed migration may still be required.
[1]- Done flyway repair -user=user -password=password -url=jdbc:mysql://127.0.0.1:3306/db -table=db_migrations
[2]+ Done flyway repair -user=user -password=password -url=jdbc:mysql://127.0.0.1:3306/db -table=db_migrations
Контрольные суммы обновились, но когда я запустил flyway info
это показывает, что все предыдущие миграции теперь отмечены future
.Просматривая документацию, будущее определено:
Это миграции, выполненные при более новом развертывании приложения, которые еще не доступны в этой версии.Например: у нас есть миграции, доступные на пути к классам до версии 3.0.Таблица истории схемы показывает, что миграция на версию 4.0 (нам неизвестна) уже была применена.
Однако при проверке версии я получаю правильную:
flyway -v
Flyway 4.2.0 by Boxfuse
TLDR: запустил команду repair
, чтобы обновить контрольные суммы миграции, и теперь flyway сообщает, что миграции имеют контрольную сумму из будущей версии.Проверена версия командной строки flyway и application flyway, и они обе на 4.2.0.Не уверены, как отлаживать / продолжить.Буду признателен за любую помощь.
Редактировать: Нашел один из комментариев сопровождающих по другому вопросу, определяющему будущее в дальнейшем
будущее -> выполнено, больше не найдено в настроенных местах, новее, чемновейший найденный сценарий
Так что, возможно, линия передачи cmd не может найти сценарии миграции, которые видит в базе данных?