数据库版本控制工具Flyway
简介
简而言之 就是一个控制数据库版本的工具 每次更改数据库都会生成一条数据 启动项目会加载一次数据库文件 从而同步到数据库中 让数据迁移更有条理性
使用步骤
引入maven依赖
版本跟随spring的版本就可以
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>6.4.4</version>
</plugin>
配置文件配置
spring:
flyway:
enabled: true # 开启flyway
baseline-on-migrate: true #如果执行sql 脚本之前,数据库是非空状态。那么需要指定这个配置
clean-disabled: true # 禁用Clean命令
#Flyway 的 Clean 命令,会将 Flyway 所连接的数据库中的所有内容全部清理掉,不论其中的表或数据是否是通过 Flyway 添加进去的。
out-of-order: true # 取消文件限制
添加 sql 脚本
flyway会自动找 resources 目录下的 db -> migration 文件夹下的sql文件 从第一个文件开始 往下执行 因此sql文件的命名推荐是 V时间_test.sql 比如 V2020091401_test.sql 后面的01是指当日修改的序号
/*
Navicat Premium Data Transfer
Source Server : 43.143.64.26
Source Server Type : MySQL
Source Server Version : 50736
Source Host : 43.143.64.26:3306
Source Schema : xdclass_user
Target Server Type : MySQL
Target Server Version : 50736
File Encoding : 65001
Date: 14/09/2022 16:05:04
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`id` bigint(20) NOT NULL COMMENT '角色表',
`role_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色名称',
`identification` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色标识',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of role
-- ----------------------------
SET FOREIGN_KEY_CHECKS = 1;
启动项目 查看数据库 就会生成这张表 还有一个flyway版本控制表 值得一提的是 flyway每次启动都会去验证每个sql文件的hash值 当hash值不一致时 flyway就会认为这个sql文件发生了改变 然后就会再次运行 就有可能会报错 所以使用的时候一定要注意这一点 每次数据库的更改 推荐都必须再新建一个sql文件
更多配置 请查看flyway官网查看