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");
}
}