目录

介绍:

工作原理

项目创建

pom依赖

application.properties

sql文件

sql文件命名规则

FlywayDemoApplication启动类

结果

验证R开头的sql

结果


介绍:

flyway可以理解为数据库管理工具,类似SVN,团队开发时用于控制数据库更新迭代。

工作原理

官网:https://flywaydb.org/documentation/getstarted/how

项目创建

创建springboot项目flyway-demo

pom依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId></dependency><!-- 加载jdbc连接数据库 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId></dependency></dependencies>

application.properties

#配置pgsql数据源(可自行改成mysql)
spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.platform=postgres
#flyway 的 clean 命令会删除指定 schema 下的所有 table, 生产务必禁掉。这个默认 false
spring.flyway.clean-disabled=true
#启用或禁用 flyway
spring.flyway.enabled=true
#执行迁移时是否自动调用验证   当你的 版本不符合逻辑 比如 你先执行了 DML 而没有 对应的DDL #会抛出异常
spring.flyway.baseline-on-migrate=true
#是否允许不按顺序迁移 开发建议 true  生产建议 false
spring.flyway.out-of-order=false
#SQL 脚本的目录,多个路径使用逗号分隔 默认值 classpath:db/migration
spring.flyway.locations=classpath:/db/migration
#检查迁移脚本的位置是否存在,默认false
spring.flyway.check-location=true
# 字符编码 默认 UTF-8
spring.flyway.encoding=UTF-8

sql文件

在resources/db/migration文件夹中放入执行的sql文件

文件名:V1.0.0__test.sql

-- 用户表
CREATE TABLE IF NOT EXISTS public.tb_user (user_id int8 NOT NULL, -- 用户id,主键user_name varchar(128) NOT NULL, -- 用户名称user_age int4 NULL, -- 用户年龄create_time timestamp NULL, -- 创建时间update_time timestamp NULL, -- 更新时间CONSTRAINT pk_tb_user PRIMARY KEY (user_id)
);

sql文件命名规则

V+版本号(版本号的数字间以"."或"_"分隔开)+双下划线(用来分隔版本号和描述)+文件描述+后缀名,例如:V1.0.0__test.sql。

注:版本号不能相同!

1.V开头的文件,每个文件只会被执行一次,常用于创建、修改、删除表;插入、修改数据等

2.R开头的文件,校验和变化了就会执行,格式为R__1.0.1update.sql

FlywayDemoApplication启动类

@SpringBootApplication
public class FlywayDemoApplication {public static void main(String[] args) {SpringApplication.run(FlywayDemoApplication.class, args);}}

结果

生成flyway_schema_history和tb_user两个表

flyway_schema_history用于记录数据库的更新历史,有数据时,V1.0.0__test.sql就不会再执行了

验证R开头的sql

在resources/db/migration文件夹中放入执行的sql文件

文件名:R1.0.0__update.sql

ALTER TABLE public.tb_user ADD COLUMN IF NOT EXISTS user_email varchar(128) NULL;
COMMENT ON COLUMN public.tb_user.user_email IS '邮箱';

重新运行启动类

结果

tb_user新添字段成功,flyway_schema_history新增一条记录

SpringBoot整合Flyway相关推荐

  1. springboot整合flyway出现Correct the classpath of your application so that it contains a single,compatibl

    springboot整合flyway出现异常具体如下 *************************** APPLICATION FAILED TO START ***************** ...

  2. SpringBoot 整合Flyway 常见问题【科普解决】

    很多网上关于Flyway整合springboot的说明并不明确 Flyway在6.0之前是有兼容的,在6.0之后是没有做兼容的,小编的版本是6.0+ 报错如下: Caused by: org.flyw ...

  3. springboot整合Actuator监控

    springboot整合Actuator监控. 1.简要说明: Actuator提供了对springboot应用程序监视和管理的能力,可以选择通过使用HTTP Endpoint或者使用JMX来管理和监 ...

  4. SpringBoot第九篇: springboot整合Redis

    这篇文章主要介绍springboot整合redis,至于没有接触过redis的同学可以看下这篇文章:5分钟带你入门Redis. 引入依赖: 在pom文件中添加redis依赖: <dependen ...

  5. es springboot 不设置id_原创 | 一篇解决Springboot 整合 Elasticsearch

    ElasticSearch 结合业务的场景,在目前的商品体系需要构建搜索服务,主要是为了提供用户更丰富的检索场景以及高速,实时及性能稳定的搜索服务. ElasticSearch是一个基于Lucene的 ...

  6. springboot整合shiro使用shiro-spring-boot-web-starter

    此文章仅仅说明在springboot整合shiro时的一些坑,并不是教程 增加依赖 <!-- 集成shiro依赖 --> <dependency><groupId> ...

  7. db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程

    springboot整合MySQL很简单,多数据源就master,slave就行了,但是在整合DB2就需要另起一行,以下是同一个yml文件 先配置MySQL,代码如下 spring: datasour ...

  8. 九、springboot整合rabbitMQ

    springboot整合rabbitMQ 简介 rabbitMQ是部署最广泛的开源消息代理. rabbitMQ轻量级,易于在内部和云中部署. 它支持多种消息传递协议. RabbitMQ可以部署在分布式 ...

  9. 八、springboot整合Spring Security

    springboot整合Spring Security 简介 Spring Security是一个功能强大且可高度自定义的身份验证和访问控制框架.它是保护基于Spring的应用程序的事实标准. Spr ...

最新文章

  1. 多款激光雷达性能评估
  2. OpenCASCADE:使用 XSTEPDRAW
  3. Android Studio: Debug Android SDK Source Code
  4. 使用PHP应用查询SAP HANA Express Edition里的数据
  5. 【绝对干货】kafkastream广告
  6. CentOS7.0 安装 tomcat-9.0
  7. 数据库表的字段中含空格怎么办?
  8. python独立log示例_带有Python示例的math.log1p()方法
  9. php 主进程子进程,PHP中的子进程的任何等价物?
  10. 【京东科技】视觉基础研究部研究型实习生招聘
  11. aspcms模板转php,aspcms转换zzzcms,aspcms迁移数据,aspcms替换模板,aspcms模板转换-下载-zzzcms官网-开源免费建站系统...
  12. 自己动手构造编译系统:编译、汇编与链接2.1.4 语义分析
  13. 【Vue3.0】—V- model‘ directives require no argument.
  14. python编程狮app题库_‎Python编程狮-零基础学Python App Storessa
  15. TangerineWallpaper for Mac(高清橘子壁纸) 中文版
  16. 【吴恩达机器学习】学习笔记——梯度下降
  17. 哈工大离散数学期末试题2021回忆版
  18. 软件开发模型:瀑布模型,增量模型,原型模型,螺旋模型,喷泉模型,敏捷开发模型
  19. linux安装RarLinux
  20. win7如何安装IIS,三种方法任你选(图文教程)

热门文章

  1. 流处理引擎:ksql
  2. html打开ppt自动播放,如何让ppt文档打开自动播放_让ppt文档打开自动播放的方法-系统城...
  3. 报错:Error creating bean with name ‘serverEndpointExporter‘ defined in class path resource [group/oneo
  4. [软件]Safe3 Web漏洞扫描系统企业版v10.1 破解版
  5. CVPR2020论文分方向整理之检测篇(代码/论文解读/136篇打包下载)
  6. EasyPoi导出Excel实现标记颜色
  7. PS制作透明的BMP图片
  8. 雷电2接口_厉害!跟Type-C长得一毛一样的雷电3,原来区别这么大,别搞混了
  9. win10 pycharm小写变大写,键盘输入错乱
  10. NLP专题直播 | 详谈Transformer, BERT, ALBERT, XLNet(ALBERT第一作者亲自讲解)