天坑 flayway 6.4.4 升级到9.0.7 java.lang.NoSuchMethodError: FluentConfiguration ignoreMissingMigrations

        先看错误信息:

Caused by:
                                    org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception; nested exception is java.lang.NoSuchMethodError: 'org.flywaydb.core.api.configuration.FluentConfiguration org.flywaydb.core.api.configuration.FluentConfiguration.ignoreMissingMigrations(boolean)'
                                        at app//org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
                                        at app//org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
                                        ... 168 more
                                        Caused by:
                                        java.lang.NoSuchMethodError: 'org.flywaydb.core.api.configuration.FluentConfiguration org.flywaydb.core.api.configuration.FluentConfiguration.ignoreMissingMigrations(boolean)'
                                            at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration.configureIgnoredMigrations(FlywayAutoConfiguration.java:264)
                                            at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration.configureProperties(FlywayAutoConfiguration.java:205)
                                            at org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration.flyway(FlywayAutoConfiguration.java:119)
                                            at jdk.internal.reflect.GeneratedMethodAccessor270.invoke(Unknown Source)
                                            at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                                            at java.base/java.lang.reflect.Method.invoke(Method.java:568)
                                            at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
                                            ... 169 more

        在作者升级flayway的时候出现了如题的问题,问题的原因就是spring boot 版本和flayway 不兼容。那么如何解决呢? 下面二步简单解决。

1. 在application 中把如图的FlywayAutoConfiguration.class 自动配置取消掉。

2. 手动注入FlaywayConfiguration FluentConfiguration 像如下, 不要全抄

 @Bean
    @ConditionalOnProperty(prefix = "spring.flyway", name = "enabled", matchIfMissing = true)
    public Flyway flyway(DataSource dataSource, RedisDistributedLock redisDistributedLock) {
        String lockKey = "Flyway-" + appName;
        boolean locked = redisDistributedLock.lock(lockKey, 60_000L);
        if (!locked) {
            log.error("Flyway获取lockKey=[{}]的redis锁超时", lockKey);
            // 停掉应用,静待下一次的重启
            Runtime.getRuntime().halt(1);
        }
        try {
            log.info("::::::::::::::flyway begin");
            Flyway flyway = Flyway.configure().dataSource(dataSource).load();
            flyway.migrate();
            log.info("::::::::::::::flyway end");
            return flyway;
        } finally {
            redisDistributedLock.unLock(lockKey);
        }
    }

 真实有效哦,试试!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值