学习写代码呀

导航

org.flywaydb.core.api.FlywayException: Validate failed: Detected failed migration to version 1.0.9 (update)

spring中应用flyway

报错:

org.flywaydb.core.api.FlywayException: Validate failed: Detected failed migration to version 1.0.9 (update)

解决方法:

一、检查配置类

二、检查数据库里有没有创建schema_version这个记录表,如果有的话检查更新到哪个版本sql了,可能是以前已经执行过的sql文件有了改动,尝试删除schema_version再重新运行项目;或者说是里面的sql有没有语法错误,在数据库里执行一下试试。

三、如果没有schema_version可能是配置有问题没执行配置类的方法

四、sql文件命名规范可以定义,比如:v-1.0.1__description.sql

 

代码实践:

public class FlywayMigration {
    private DataSource dataSource;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    
    public void migrate() {  
        //初始化flyway类
        Flyway flyway = new Flyway();
        //如果是新的项目,则无需配置此项
        flyway.setBaselineOnMigrate(true);
        //设置加载数据库的相关配置信息
        flyway.setDataSource(dataSource);
        //设置存放flyway metadata数据的表名,默认"schema_version",可不写
       // flyway.setTable("。。。");
        //设置flyway扫描sql升级脚本、java升级脚本的目录路径或包路径,默认"db/migration",可不写
        flyway.setLocations("db/migration");
        //设置sql脚本文件的编码,默认"UTF-8",可不写
        flyway.setEncoding("GBK");
        //sql文件的前缀
        flyway.setSqlMigrationPrefix("V-");
        //如果是已执行过的项目,则需执行sql文件的基本版本
        flyway.setBaselineVersionAsString("1.0.0.0");
        flyway.setSqlMigrationSuffix(".sql");
        flyway.migrate();
        System.out.println("配置flyway");
    }

}

 

posted on 2019-09-19 10:33  学习写代码呀  阅读(12328)  评论(0编辑  收藏  举报