Ошибка при создании компонента с именем ‘flyway’, определенным в ресурсе ServletContext [/WEB-INF/applicationContext-db.xml ]

#hibernate #spring-mvc #flyway

#переход в спящий режим #spring-mvc #проход

Вопрос:

Привет, ребята, я удалил 4 sql-файла из flyway и соответствующие строки версии схемы из базы данных, это проект spring mvc. Я попытался откатить все файлы, но ничего не изменилось. Я использую intellij. Есть идеи, как я могу это решить?

 Error creating bean with name 'flyway' defined in ServletContext resource [/WEB-INF/applicationContext-db.xml]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Validate failed: Detected resolved migration not aenter code herepplied to database: 0.1.10
    2020-12-17 22:21:21,189 INFO  HikariPool - springHikariCP - Close initiated...
    2020-12-17 22:21:21,205 INFO  HikariPool - springHikariCP - Closed.
    2020-12-17 22:21:21,205 ERROR ContextLoader - Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in ServletContext resource [/WEB-INF/applicationContext-db.xml]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Validate failed: Detected resolved migration not applied to database: 0.1.10
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:851)
 

Комментарии:

1. вот вторая часть ошибки в org.springframework.context.support. AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) в org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)

Ответ №1:

Ошибка означает, что Flyway может видеть файл миграции (версия 0.1.10), который не является последним, то есть в таблице истории есть миграции с более высоким номером, но в нем нет записей о его применении в прошлом, и он явно не игнорируется. Быстрый обходной путь — добавить флаг конфигурации -ignoreIgnoredMigrations=true

Однако, в принципе, вы не должны удалять файлы миграции и изменять таблицу истории. Как только вы это сделаете, существует вероятность ошибок, если вы где-либо введете несоответствие, и вы также нарушили идею о том, что коллекция скриптов (надеюсь, с контролем исходного кода!) позволяет точно воспроизводить состояние базы данных с flyway clean migrate помощью .

Комментарии:

1. Большое вам спасибо