1. 概述
Flyway用于数据库版本控制,官网这样解释Robust schema evolution across all your environments.With ease, pleasure, and plain SQL。更多介绍,请参阅Flyway官网。Flyway是一个开源的数据库迁移工具,它更倾向于简单和约定优于配置的方式,迁移数据可以写成SQL或者Java程序,支持多种接入方式,例如命令行客户端、Java API、Maven构建、Gradle构建等
2. 核心依赖
新建一个springboot项目,在pom.xml文件中引入核心依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
3. yml配置文件
spring:
application:
name: springboot-flyway
datasource:
type: com.mysql.cj.jdbc.MysqlDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://xx.xx.xx.xx:3306/springboot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: 用户名
password: 密码
hikari:
minimum-idle: 5 #最小空闲连接数
idle-timeout: 180000 #空闲连接存活最大时间,默认600000
maximum-pool-size: 10 #连接池最大连接数
auto-commit: true #自动提交 默认true
pool-name: HikariCP #连接池名称
max-lifetime: 1800000 #连接池最长生命周期,0表示无限生命周期,默认1800000(30分钟)
connection-timeout: 30000 #连接超时时间,默认30000
connection-test-query: SELECT 1
flyway:
enabled: true #是否开启,默认true
check-location: true #是否开启路径校验,默认true
locations:
- classpath:db/migration #sql文件存放路径,默认classpath:db/migration
encoding: UTF-8 #编码
baseline-on-migrate: true #表结构存在,flyway记录表不存在时须开启
table: flyway_schema_history #flyway记录表名称,默认flyway_schema_history
baseline-version: 0 #基础版本,默认1
validate-on-migrate: true #开启sql文件校验,默认true
clean-disabled: false #是否禁用清除,默认false,生产环境不可清除数据,必须为true
clean-on-validation-error: false #发生验证错误时,是否执行清除,默认false,生产环境不可开启
sql-migration-prefix: V #sql文件前缀,默认V
sql-migration-separator: __ #sql文件分隔符,默认__
sql-migration-suffixes: .sql #sql文件后缀,默认.sql
注意:sql文件中有版本号为1时,baseline-version版本号配置为0
更多配置可参阅官网配置信息
4. SQL文件
在resources目录下新建db/migration目录,并新建两个sql文件V1__schema.sql和V2__data.sql
CREATE TABLE emp_info (
id BIGINT UNSIGNED auto_increment NOT NULL COMMENT '主键ID',
emp_code varchar(30) NULL COMMENT '员工编码',
emp_name varchar(30) NULL COMMENT '员工名称',
sex TINYINT NULL COMMENT '性别0:男;1:女;2:未知',
phone varchar(11) NULL COMMENT '手机号',
CONSTRAINT emp_info_pk PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息表';
INSERT INTO emp_info (id, emp_code, emp_name, sex, phone) VALUES(NULL, '10001', '张三', 0, '13098783567');
注意:sql文件命名规则是V + 版本号 + 双下划线(__) + 文件名 + .sql
5. 验证
编写主启动类,启动SpringBoot项目
数据库中会新建表flyway_schema_history,表中会记录执行sql的信息。并执行sql文件中的sql
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76792.html