3.指定flyway.locations目录下创建sql脚本
命名规则:源码默认初始版本号为V1,sql脚本版本号需大于1, sql脚本命名 :V版本号__名称.sql,
注:版本号后面为两条下划线,后续脚本版本号需大于当前最大版本号;
springboot启动时,加载flyway组件,执行sql脚本。
首次使用flyway,springboot启动时,会自动创建schema_version表,维护历史sql版本变更信息。
sql脚本执行顺序为:按版本号从小到大;
历史sql脚本一旦随springboot启动升级,无论脚本执行成功还是失败,后续开发不能再做修改,否则,springboot启动时由于校验到脚本文件有变更而导致报错,无法启动成功。
若同时升级多个版本,中间某个版本的脚本执行失败,则执行失败的脚本内操作会回滚,同时,后面的版本不会执行,而且springboot启动失败。
若脚本执行失败,需要及时处理解决,以下两种解决方式:
1:删除失败的版本记录,修改脚本,重新打包部署;
2:更新失败的版本信息字段 success为“1”即成功,新增正确的sql脚本,并赋值新的版本号,然后重新启动springboot, 启动时会忽略失败的版本,继续执行后面的版本;
schema_version表:
4.flyway 多数据源配置
若同一个项目中有多个数据源需要进行版本管理,则需要放弃application.properties中的配置,
并且配置flyway.enabled=false,禁止springboot自动的调用flyway.migrate()方法。然后增加配置类,手动调用migrate()方法即可。
1 package cn.demo.test.config;
2
3 import javax.annotation.PostConstruct;
4 import javax.annotation.Resource;
5 import javax.sql.DataSource;
6
7 import org.flywaydb.core.Flyway;
8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.context.annotation.Configuration;
10
11 @Configuration
12 public class FlywayDbInitializer {
13
14 @Resource
15 private DataSource dataSource;//系统中已经注入的数据源
16
17 @Resource
18 private DataSource dmDataSource;//多个数据源
19
20 @PostConstruct
21 public void migrateFlyway() {
22
23 Flyway alertFlyway = new Flyway();
24 alertFlyway.setBaselineOnMigrate( true );
25 alertFlyway.setDataSource(dataSource);
26 alertFlyway.setSchemas("alert" );
27 alertFlyway.setLocations("db/alertVersion" );
28 alertFlyway.setValidateOnMigrate( false ); // 是否校验checksum值
29 alertFlyway.setIgnoreFailedFutureMigration( false );
30 // alertFlyway.setBaselineVersionAsString("1.1"); // 基准版本,<=1.1不会执行。
31 alertFlyway.migrate();
32 Flyway dmFlyway = new Flyway();
33 dmFlyway.setDataSource(dmDataSource);
34 dmFlyway.setBaselineOnMigrate( true );
35 dmFlyway.setSchemas("data_devops" );
36 dmFlyway.setLocations("db/dataDevopsVersion" );
37 dmFlyway.migrate();
38 }
39 }
Springboot集成flywaydb支持多数据源
标签:导致 password init 赋值 数据库 组件 config location 报错
查看更多关于Springboot集成flywaydb支持多数据源的详细内容...