ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库迁移工具flyway

2021-11-25 11:32:28  阅读:278  来源: 互联网

标签:数据库 Flyway flyway sql 迁移 NULL user


flyway介绍

Flyway是一款数据库迁移工具,它让数据库迁移变得更加简单。它能像Git一样对数据库进行版本控制,支持命令行工具、Maven插件、第三方工具(比如SpringBoot)等多种使用方式。

相关概念

1.工作原理

使用Flyway时我们需要编写好数据库迁移的SQL脚本,比如V1__Initial_Setup.sql中初始化了三种表,V2__First_Changes.sql中又新增了两种表。Flyway会创建flyway_schema_history表,用于存储这些SQL脚本的执行情况,从而对数据库进行版本控制。当我们使用Flyway进行数据库迁移时,Flyway会根据flyway_schema_history表中的记录,自行决定需要执行哪些SQL脚本,从而实现数据库迁移。
在这里插入图片描述

2.脚本命名规范

为了能被Flyway正确执行,SQL迁移脚本需要遵循如下规范:
在这里插入图片描述
Prefix(前缀):V表示有版本号的数据库迁移,U表示一些数据库版本的回滚,R表示可重复执行的数据库迁移;
Version(版本号):Flyway会按照版本号的大小顺序来执行数据库迁移脚本;
Separator(分隔符):命名时使用双下划线分隔符;
Description(描述):用于描述该迁移脚本的具体操作说明;
Suffix(后缀):表示.sql文件。

3.相关命令

migrate:数据库迁移命令,会根据设置好的SQL脚本直接将数据库表升级至最新版本。
clean:删除数据库中所有的表,千万别在生产环境上使用。
info:打印所有关于数据库迁移的详细信息和状态信息。
validate:验证数据库迁移是否可用。
undo:对数据库迁移进行回滚操作。
baseline:以现有数据库为基准,创建flyway_schema_history表,大于基准版本的数据库迁移才会被应用。
repair:修复flyway_schema_history表。

结合springboot使用

0.项目结构

在这里插入图片描述

1.创建一个springboot项目

2.pom.xml

在这里插入图片描述
在这里插入图片描述

3.application.yml

在这里插入图片描述

4.sql脚本

V1__create_user.sql

CREATE TABLE IF NOT EXISTS `user`(
  `user_id`          INT(11)           NOT NULL AUTO_INCREMENT,
  `user_name`        VARCHAR(100)      NOT NULL COMMENT '用户姓名',
  `age`              INT(3)            NOT NULL COMMENT '年龄',
  `created_time`     datetime          NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `created_by`       varchar(100)      NOT NULL DEFAULT 'UNKNOWN',
  `updated_time`     datetime          NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_by`       varchar(100)      NOT NULL DEFAULT 'UNKNOWN',
  PRIMARY KEY (`user_id`)
  )ENGINE=InnoDB DEFAULT CHARSET=utf8;

V2__add_user.sql

insert into `user`(user_name,age) values('lisi',33);

R__add_unknown_user.sql

insert into `user`(user_name,age) values('unknown',4);

5.启动Application

在这里插入图片描述

6.观察结果

在这里插入图片描述
在这里插入图片描述

标签:数据库,Flyway,flyway,sql,迁移,NULL,user
来源: https://blog.csdn.net/qq_28356887/article/details/121532520

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有