#java #spring-boot #flyway
Вопрос:
Мы используем Flyway 6.5.7 и пытаемся перейти с Spring Boot 2.4.13 на Spring Boot 2.5.x. Приложение построено с использованием Gradle 7.2.
До обновления весенней загрузки все работает нормально, но после этого создание компонента завершается ошибкой с этой ошибкой при запуске приложения:
Не удалось создать экземпляр [org.flywaydb.core.Flyway]: Заводской метод «flyway» выдал исключение; вложенное исключение-java.lang.Исключение IllegalArgumentException: Имя не должно быть пустым», «level»:»WARN»,»thread»:»main»,»logClass»:»o.s.c.s.AbstractApplicationContext»,»logMethod»:»refresh»}
Если мы отключим Flyway, приложение отлично запустится с Spring Boot 2.5.x.
И если мы вернемся к версии Spring Boot более ранней, чем 2.5.x, и снова активируем Flyway, он будет работать нормально…
Итак, что случилось с Flyway и Spring Boot 2.5.x?
Комментарии:
1. Какова полная трассировка стека, в идеале не в JSON, при сбое?
2. Сама Spring Boot 2.5 использует Flyway 7.7.3, поэтому я подозреваю, что ваша текущая версия flyway слишком стара для использования с Spring Boot 2.5. Я бы предложил обновить (и не вручную управлять зависимостями flyway, а использовать версию из spring Boot).
3. @M. Deinum: Но Flyway 7.x и выше не являются изданиями «сообщества»? Если мы удалим версию Flyway из файла сборки, она будет использовать версию 7.1.1, для которой требуется лицензия: «Требуется обновление Flyway Teams Edition или Sybase ASE: Sybase ASE 16.0 больше не поддерживается редакцией сообщества Flyway, но все еще поддерживается редакцией Flyway Teams».
4. Тогда не обновляйте spring. Flyway является коммерческим для определенных баз данных, в настоящее время той, которую вы используете, поэтому либо платите за лицензию (и сможете использовать новые функции), либо не торгуйте и придерживайтесь старой версии Spring Boot.
5. @M. Дейнум Скажи это Снику 🙂