集成Flyway
正常使用
spring:
flyway:
# 当schema为空时,是否自动执行基线。配置为true时,第一次启动flyway时,会自动创建flyway记录版本的表flyway_schema_history,以及基线记录(V1基线记录)
baseline-on-migrate: true
# 是否开启flyway
enabled: true
# 扫描的sql脚本位置
locations: classpath:migration
多数据源下的使用
在多数据源情况下需要在执行flyway之前指定数据源和存储SQL的位置
如果不指定数据源的话会报错:==Flyway migration DataSource missing==
@Bean
// 注入指定的数据源
public Flyway migrateBusiness(@Qualifier("masterDataSource") DataSource masterDataSource) {
// 配置版本SQL文件所在的路径
String businessFlywayLocations = baseSqlLocation + "/business";
Flyway flyway = Flyway.configure()
// 配置数据源
.dataSource(masterDataSource)
// 配置SQL文件路径
.locations(businessFlywayLocations)
.encoding(ENCODING)
.baselineOnMigrate(true)
.load();
flyway.migrate();
return flyway;
}
配置说明
flyway.baseline-description #对执行迁移时基准版本的描述.
flyway.baseline-on-migrate #当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
flyway.baseline-version #开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
flyway.check-location #检查迁移脚本的位置是否存在,默认false.
flyway.clean-on-validation-error #当发现校验错误时是否自动调用clean,默认false.
flyway.enabled #是否开启flywary,默认true.
flyway.encoding #设置迁移时的编码,默认UTF-8.
flyway.ignore-failed-future-migration #当读取元数据表时是否忽略错误的迁移,默认false.
flyway.init-sqls #当初始化好连接时要执行的SQL.
flyway.locations #迁移脚本的位置,默认db/migration.
flyway.out-of-order #是否允许无序的迁移,默认false.
flyway.password #目标数据库的密码.
flyway.placeholder-prefix #设置每个placeholder的前缀,默认${.
flyway.placeholder-replacementplaceholders #是否要被替换,默认true.
flyway.placeholder-suffix #设置每个placeholder的后缀,默认}.
flyway.placeholders.[placeholder name] #设置placeholder的value
flyway.schemas #设定需要flywary迁移的schema,大小写敏感,默认为连接默认的schema.
flyway.sql-migration-prefix #迁移文件的前缀,默认为V.
flyway.sql-migration-separator #迁移脚本的文件名分隔符,默认__
flyway.sql-migration-suffix #迁移脚本的后缀,默认为.sql
flyway.tableflyway #使用的元数据表名,默认为schema_version
flyway.target #迁移时使用的目标版本,默认为latest version
flyway.url #迁移时使用的JDBC URL,如果没有指定的话,将使用配置的主数据源
flyway.user #迁移数据库的用户名
flyway.validate-on-migrate #迁移时是否校验,默认为true.
注意
==V1是base版本,写SQL时不能使用V1,该版本的SQL文件不会执行(该注意可能有问题,需要自行思考尝试)==
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果