Обновление springboot 2.0.3 до 2.1.1 также приносит новую версию пролетного пути: 5.2.3 вместо 5.0.7.
В 5.2.3 SpringJdbcMigration устарела и будет удалена на пролетном пути 6. Iв основном используют сценарии sql, но у меня также есть один класс миграции java в проекте (существует 4 миграции sql, а последний, 4.2, - это миграция java - это был просто быстрый и грязный хак для изменения старых данных, и я немне это больше не нужно).
Поэтому я изменил этот класс:
class V4_2__Update_foo implements SpringJdbcMigration {
public void migrate(JdbcTemplate jdbcTemplate) throws Exception {
...
}
}
на
class V4_2__Update_foo extends BaseJavaMigration {
public void migrate(Context context) throws Exception {
JdbcTemplate jdbcTemplate =
new JdbcTemplate(new SingleConnectionDataSource(context.getConnection(), true));
......
}
}
Это единственное изменение, все остальное тоже самое.В результате получается
Application run failed
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]:
Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException:
Validate failed: Migration type mismatch for migration version 4.2
....
Caused by: org.flywaydb.core.api.FlywayException:
Validate failed: Migration type mismatch for migration version 4.2
-> Applied to database : SPRING_JDBC
-> Resolved locally : JDBC
at org.flywaydb.core.Flyway.doValidate(Flyway.java:1479)
Я не хочу постоянно отключать проверку, но я также не знаю, как решить эту проблему.Я попробовал поискать в Google, но ничего не нашел по поводу "несоответствия типов".На моей машине разработчика я попытался «восстановить путь», но он только сказал
Repair of failed migration in Schema History table "PUBLIC"."schema_version" not necessary. No failed migration detected.
Successfully repaired schema history table "PUBLIC"."schema_version"
Тип миграции 4.2 по-прежнему «SPRING_JDBC» после запуска восстановления.Позже я полностью удалил класс java, и я получил предупреждение, что
Schema "PUBLIC" has a version (4.2) that is newer than the latest available migration (4) !
, но, по крайней мере, приложение снова запустилось.Мне не очень удобно делать это на производстве.Есть еще идеи?