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的依赖:

org.flywaydb

flyway-core

5.0.3

org.flywaydb

flyway-maven-plugin

5.0.3

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的详细教程的文章就介绍到这了,更多相关Flyway介绍 Springboot集成Flyway内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

Flayway mysql自动生成版本_Flyway详解及Springboot集成Flyway的详细教程相关推荐

  1. 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. qt4.7 mysql 6.3 版本_详解Qt 4.7编译和访问Mysql驱动

    Qt4.7编译和访问Mysql驱动是本文要介绍的内容,不多说,我们来看内容.今天摸索了一上午,终于用qt连上mysql了 1.安装一个mysql5.0以上版本*** 要求:(1)安装路径不要有空格和点 ...

  4. 操作 mysql 不生成日志_详解MySQL的日志

    MySQL日志 MySQL的日志记录了MySQL的日常操作和错误信息,通过这些日志我们可以知道MySQL内部发生的事情,可以为MySQL的优化和管理提供必要的信息. MySQL的日志主要有:二进制日志 ...

  5. simulink自动生成STM32代码详解

    1.开发软件 STM32-MAT/TARGET_V5.6.0 STM32CubeMX_V5.6.0 JAVA 64_bit MATLAB_2018b MDK-ARM_V5 下图是STM32-MAT/T ...

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

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

  7. 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解

    学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...

  8. MySQL-5.7.19版本安装详解

    MySQL-5.7.19版本安装详解 1. 软件下载 Mysql5.7地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-win ...

  9. MySQL事务及隔离级别详解

    MySQL事务及隔离级别详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的基本架构 MySQL的基本架构可以分为三块,即连接池,核心功能层,存储引擎层. 1> ...

最新文章

  1. 单片机如何使用?单片机只会用例程怎么办?
  2. php 类似微信下拉菜单,微信小程序实现下拉框(附代码)
  3. 【PAT (Advanced Level) Practice】1037 Magic Coupon (25 分)
  4. 雅虎宣布关闭旗下7个数字杂志
  5. windows 加域
  6. Spring框架的前世今生以及对Spring的宏观认识
  7. 牛客每日一题3.31 城市网络 树上倍增
  8. android Animation 动画。淡出动画
  9. SqlServer高级存储过程
  10. 开关电源(DC/DC)和线性电源(LDO低压差线性稳压器)的区别
  11. vue+ele 表格 根据表格字段名称显示前端图片文件夹对应图片 没有图片显示单独图片
  12. Oracle数据库学习(六):where条件查询及关键字使用
  13. 骨灰级的魔兽伤害计算(包括物理和…
  14. watch:{} 与 this.$watch() 一样
  15. 1.2样本空间和随机事件
  16. CarSim与多版本MATLAB联合仿真问题
  17. Linuxptp在arm平台的移植与测试
  18. SpringBoot-starter-data整合Elasticsearch
  19. 化学机械抛光材料去除机理
  20. echarts 3 无法显示和弦图chord解决办法

热门文章

  1. 兰讯76A3芯片TWS配对后灭灯
  2. mathtype 章节号 Equation Chapter 1 Section 1 的去除
  3. SNMP 协议RFC
  4. 页框,页表,页表项,页面大小,页表项 长度的理解
  5. c语言%.6s和%6s的差别,iPhone 6s与iPhone 7的差别 看完全懂了!
  6. Java中接口的理解和使用
  7. Thinging in Java读后总结
  8. 使用python爬取电影下载地址并使用transmissionrpc下载
  9. django+pyecharts制作工单系统实时刷新可视化仪表盘并设置报表定时发送
  10. Ubuntu16.04安装中文出现Transaction failed:Package dependencies cannot be resolve16.04d