Flayway 是一款数据库版本控制管理工具,,支持数据库版本自动升级。
参考文档
build.gradle
plugins {id "org.springframework.boot" version "${springBootVersion}"id "io.spring.dependency-management" version "${springDependencyManagementVersion}"id "war"id "org.flywaydb.flyway" version "6.4.4" // Flyway 插件}dependencies {// flywayimplementation "org.flywaydb:flyway-core:6.4.4"}
手工创建数据库
create database wk_example
也可以使用自动的方式创建数据库
有两种方法:
下面三个步骤:
application-flyway.yml
文件application-flyway.yml
中的数据库配置application.yml
追加 flyway 配置文件application.yml
active: sdb,flyway
application-flyway.yml
spring:flyway:url: jdbc:mysql://127.0.0.1:3306/wk_example?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghaiuser: rootpassword: 123456driver: com.mysql.cj.jdbc.Driverlocations: classpath:db/migration # 指定sql文件存放的目录
文件需要放在 db/migration 目录下
V1__Create_student_table.sql
启动 springboot 后,会自动建立数据库表
为了让先初始化脚本,然后再执行查询数据库程序,这里使用了下面的参数。
@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)@DependsOn({"flyway", "flywayInitializer"})public class WebSecurityConfig extends WebSecurityConfigurerAdapter {//... 这个启动的函数,会自动查询数据库中的内容,所以要等flyway启动后,执行下面的代码}
Flyway 的其他参数配置
spring:flyway:baseline-version: 1 # 开始执行基准迁移时对现有的schema的版本打标签,默认值为1.baseline-description: first migration # 对执行迁移时基准版本的描述baseline-on-migrate: true # 当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.check-location: true # 检查迁移脚本的位置是否存在,默认false.clean-on-validation-error: false # 当发现校验错误时是否自动调用clean,默认false.encoding: UTF-8 # 设置迁移时的编码,默认UTF-8.ignore-future-migrations: true # 在读取模式历史记录表时是否忽略将来的迁移。init-sqls: # 当初始化好连接时要执行的SQL.out-of-order: false # 是否允许无序的迁移,默认false.placeholder-prefix: # 设置每个placeholder的前缀,默认${.placeholder-suffix: # 设置每个placeholder的后缀,默认}.schemas: # 设定需要flyway迁移的schema,大小写敏感,默认为连接默认的schema.sql-migration-prefix: # 迁移文件的前缀,默认为V.sql-migration-separator: # 迁移脚本的文件名分隔符,默认__sql-migration-suffixes: # 迁移脚本的后缀,默认为.sqltable: # 使用的元数据表名,默认为schema_versionvalidate-on-migrate: true # 迁移时是否校验,默认为true.