数据库版本管理工具-flyway的使用
需要说明的是, 这些参数配到springboot2 项目中, 需要加上 spring. 前缀.
spring配置
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
<property name="dataSource" ref="dataSource" /> <!--数据源-->
<property name="locations" value="dbmigration" /> <!--脚本文件夹地址 默认src/resource /db/migration-->
<property name="validateOnMigrate" value="false" /> <!--迁移验证 默认true-->
<property name="baselineOnMigrate" value="true" /> <!--基线迁移 默认false-->
<property name="placeholderPrefix" value="ignore" /> <!--占位符前缀-->
<property name="outOfOrder" value="false"/>
</bean>
在/db/migration文件夹下创建sql文件,比如:V1_0_1__初始化.sql,V1_0_2__修改表.sql等,其中sql脚本文件需要按照一定的规则来命名,能够让flyway检测并执行。
在maven,Spring Boot环境下的使用
<!--flywaydb-->
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.2.4</version>
</dependency>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>5.2.4</version>
</plugin>
yml配置
#数据库版本管理工具-flyway
flyway:
enabled: true #是否开启flyway,默认true
baseline-on-migrate: true #初始化
参考
## 设定 db source 属性
spring.datasource.url=jdbc:mysql://localhost:3306/world
spring.datasource.username=root
spring.datasource.password=toor
## 设定 flyway 属性
spring.flyway.cleanDisabled = true
# flyway 的 clean 命令会删除指定 schema 下的所有 table, 杀伤力太大了, 应该禁掉.
spring.flyway.enabled = true
# 启用或禁用 flyway
spring.flyway.locations =classpath:db/migration
# 设定 SQL 脚本的目录,多个路径使用逗号分隔, 比如取值为 classpath:db/migration,filesystem:/sql-migrations
spring.flyway.baselineOnMigrate=true
# 如果指定 schema 包含了其他表,但没有 flyway schema history 表的话, 在执行 flyway migrate 命令之前, 必须先执行 flyway baseline 命令.
# 设置 spring.flyway.baseline-on-migrate 为 true 后, flyway 将在需要 baseline 的时候, 自动执行一次 baseline.
spring.flyway.baselineVersion=1
# 指定 baseline 的版本号,缺省值为 1, 低于该版本号的 SQL 文件, migrate 的时候被忽略.
#spring.flyway.encoding=
# Encoding of SQL migrations (default: UTF-8)
spring.flyway.table=flyway_schema_history_myapp
# 设定 flyway 的 metadata 表名, 缺省为 flyway_schema_history
spring.flyway.outOfOrder=true
# 开发环境最好开启 outOfOrder, 生产环境关闭 outOfOrder .
#spring.flyway.schemas=
# 需要 flyway 管控的 schema list, 缺省的话, 使用的时 dbsource.connection直连上的那个 schema, 可以指定多个schema, 但仅会在第一个schema下建立 metadata 表, 也仅在第一个schema应用migration sql 脚本. 但flyway Clean 命令会依次在这些schema下都执行一遍.