Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库,同时也支持失败恢复。

Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表。 表中保存了版本,描述,要执行的sql脚本等;

sql脚本的格式:V+版本号 +双下划线+秒速+结束符

例如:V1__INIT_DATABASE.sql

上面的V 是默认值, 可以通过

flyway.sql-migration-prefix来指定前缀  ,

Migrate:

Migrate是指把数据Schema迁移到最新版本,在Migrate时会检查MetaData元数据表,如果不存在就创建MetaData表,MetaData用于记录数据库历史变更等信息;

Migrate会扫描指定文件系统或者classpath下的Migrations。会与MetaData中的记录进行对比,进行版本升级;

Clean:清除掉对应数据库Schema中所有的对象,包括表结构,视图,存储过程等,clean操作在dev 和 test阶段很好用;

Info:用于打印所有的Migrations的详细和状态信息,也是通过MetaData和Migrations完成的,可以快速定位当前的数据库版本;

validate:验证以及apply的Migrations是否有变更,默认开启的;原理是对比MetaData表与本地Migrations的checkNum值,如果值相同则验证通过,否则失败。

BaseLine:对已经存在数据库Schema结构的数据库一种解决方案。实现在非空数据库新建MetaData表,并把Migrations应用到该数据库;也可以应用到已有表结构的数据库中也可以实现添加Metadata表。

repair:repair操作能够修复metaData表,该操作在metadata出现错误时很有用

用途:

1):移除失败的Migration记录,只针对不支持DDL事务的数据库

使用Flayway:

1、引入flyway的依赖:

<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>5.0.3</version></dependency>
<plugin><groupId>org.flywaydb</groupId><artifactId>flyway-maven-plugin</artifactId><version>5.0.3</version></plugin>

2、新建一个maven的Springboot项目,在配置文件中配置数据源信息:

server.port=8088
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3、在classpath下新建/db/migration文件夹,并创建sql脚本文件:


use testdb;CREATE TABLE person (id int(11) NOT NULL AUTO_INCREMENT,first varchar(100) NOT NULL,last varchar(100) NOT NULL,dateofbirth DATE DEFAULT null,placeofbirth varchar(100) not null,PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into person (first,last,dateofbirth,placeofbirth) values('Dursun','KOC', STR_TO_DATE('02/10/1982', '%m/%d/%Y'),'Erzincan');insert into person (first,last,dateofbirth,placeofbirth) values('Durseeun','KeeOC', STR_TO_DATE('05/10/1982', '%m/%d/%Y'),'Erzeeincan');

4、启动springboot项目:

加载了sql脚本 。

5、查看数据库:

生成了flyway-schema-history表,这个版本默认是这个表,如果想自己指定schema表的命,可以设置:

flyway.tableflyway

6:flyway的一些其他配置:

flyway.baseline-description对执行迁移时基准版本的描述.
flyway.baseline-on-migrate当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
flyway.baseline-version开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
flyway.check-location检查迁移脚本的位置是否存在,默认false.
flyway.clean-on-validation-error当发现校验错误时是否自动调用clean,默认false.
flyway.enabled是否开启flywary,默认true.
flyway.encoding设置迁移时的编码,默认UTF-8.
flyway.ignore-failed-future-migration当读取元数据表时是否忽略错误的迁移,默认false.
flyway.init-sqls当初始化好连接时要执行的SQL.
flyway.locations迁移脚本的位置,默认db/migration.
flyway.out-of-order是否允许无序的迁移,默认false.
flyway.password目标数据库的密码.
flyway.placeholder-prefix设置每个placeholder的前缀,默认${.
flyway.placeholder-replacementplaceholders是否要被替换,默认true.
flyway.placeholder-suffix设置每个placeholder的后缀,默认}.
flyway.placeholders.[placeholder name]设置placeholder的value
flyway.schemas设定需要flywary迁移的schema,大小写敏感,默认为连接默认的schema.
flyway.sql-migration-prefix迁移文件的前缀,默认为V.
flyway.sql-migration-separator迁移脚本的文件名分隔符,默认__
flyway.sql-migration-suffix迁移脚本的后缀,默认为.sql
flyway.tableflyway使用的元数据表名,默认为schema_version
flyway.target迁移时使用的目标版本,默认为latest version
flyway.url迁移时使用的JDBC URL,如果没有指定的话,将使用配置的主数据源
flyway.user迁移数据库的用户名
flyway.validate-on-migrate迁移时是否校验,默认为true.

flyway的入门就到这里,其他内容后面再补上。

Flyway详解以及Springboot集成Flyway相关推荐

  1. Flayway mysql自动生成版本_Flyway详解及Springboot集成Flyway的详细教程

    Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和java api ,也支持Bu ...

  2. java flyway_Flyway详解以及Springboot集成Flyway(转)

    Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和java api ,也支持Bu ...

  3. 【详解】springboot 集成 websocket实现网页版实时聊天

    1.application.yml 配置文件 server:port: 8080spring:thymeleaf:prefix: classpath:/view/suffix: .htmlencodi ...

  4. 【flyway】SpringBoot集成Flyway

    目录 Flaway是什么? SpringBoot集成Flyway --gradle项目 注意 Flaway是什么? Flyway是一款数据库迁移(migration)工具.简单点说,就是在你部署应用的 ...

  5. SpringBoot集成flyway、mybatis-plus(超详细)

    拿到一个新需求,要给一个开发中的项目集成flyway进行数据库版本控制,对于flyway没有什么了解,就得先搭建一个demo练习一下,先知道怎么用,再集成到老项目上: 一.新建SpringBoot项目 ...

  6. Springboot集成Flyway(适用于多数据源)

    1. Flyway 可以将初始化sql在项目启动时候执行,取代单独的DBN更新包 2. 依赖 <dependency><groupId>org.flywaydb</gro ...

  7. 本地缓存Caffeine详解+整合SpringBoot的@EnableCaching

    目录 前言: Caffeine详解 加载策略 同步 异步,即多线程加载 回收策略 回收策略-数量 回收策略-权重 回收策略-时间 回收策略-软引用/弱引用 移除监听 统计 整合SpringBoot @ ...

  8. 【转】Swagger详解(SpringBoot+Swagger集成)

    Swagger-API文档接口引擎 Swagger是什么 Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务 ...

  9. springboot 集成redis_一文详解Spring Boot 集成 Redis

    redis设置: 修改redis服务器的配置文件 vim /usr/local/redis/bin/redis.confbind 0.0.0.0 protected-mode no 重新启动redis ...

最新文章

  1. python实现api server_使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务...
  2. java分发器_SpringMVC核心分发器DispatcherServlet分析
  3. python工程师工资状况_【python工程师工资|python工程师待遇怎么样】-看准网
  4. AjAx下拉列表框(SELECT)jquery插件
  5. html 获取本地txt输出,html 5 读取本地文件API
  6. Web开发之一:Web UI技术综述
  7. 文本序号添加/移除工具
  8. JPBC Element传输
  9. java毕业设计题目大全
  10. 【秋色动人xp情侣主题】
  11. MongoVue 破解治标不治本
  12. 通讯接口应用笔记1:RS485通讯上下拉电阻的选择
  13. 还不快点刷面试题,史上最全Java工程师面试题汇总,全会月薪至少3W
  14. Day1 python基础
  15. 树莓派4b 4G 64位系统下安装opencv
  16. 编译安装pypy,让py飞起来
  17. 中国电容式触摸屏市场产销调研与投资前景预测报告2022年版
  18. CSS3 HTML5下雪特效 雪花飘飘
  19. linux下安装transmission下载种子
  20. Python:类与结构体

热门文章

  1. SqlServer 数据库服务器运用
  2. 3种漂亮的登录表单页面css3+html5模板
  3. 理解elasticsearch
  4. LeetCode 6036. 构造字符串的总得分和
  5. 图像处理与计算机视觉-论文阅读笔记
  6. python中Matplotlib、seaborn中英文乱码终极解决方案
  7. python爬取歌曲教程_歌曲网站,教你爬取 mp3 和 lyric
  8. java循环例题while型_Java基础--while、do-while、for循环结构(附例题)
  9. 图片数据的基本预处理与数据增强
  10. Bat文件闪退_启动失败