SpringBoot整合Flyway
目录
介绍:
工作原理
项目创建
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相关推荐
- springboot整合flyway出现Correct the classpath of your application so that it contains a single,compatibl
springboot整合flyway出现异常具体如下 *************************** APPLICATION FAILED TO START ***************** ...
- SpringBoot 整合Flyway 常见问题【科普解决】
很多网上关于Flyway整合springboot的说明并不明确 Flyway在6.0之前是有兼容的,在6.0之后是没有做兼容的,小编的版本是6.0+ 报错如下: Caused by: org.flyw ...
- springboot整合Actuator监控
springboot整合Actuator监控. 1.简要说明: Actuator提供了对springboot应用程序监视和管理的能力,可以选择通过使用HTTP Endpoint或者使用JMX来管理和监 ...
- SpringBoot第九篇: springboot整合Redis
这篇文章主要介绍springboot整合redis,至于没有接触过redis的同学可以看下这篇文章:5分钟带你入门Redis. 引入依赖: 在pom文件中添加redis依赖: <dependen ...
- es springboot 不设置id_原创 | 一篇解决Springboot 整合 Elasticsearch
ElasticSearch 结合业务的场景,在目前的商品体系需要构建搜索服务,主要是为了提供用户更丰富的检索场景以及高速,实时及性能稳定的搜索服务. ElasticSearch是一个基于Lucene的 ...
- springboot整合shiro使用shiro-spring-boot-web-starter
此文章仅仅说明在springboot整合shiro时的一些坑,并不是教程 增加依赖 <!-- 集成shiro依赖 --> <dependency><groupId> ...
- db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程
springboot整合MySQL很简单,多数据源就master,slave就行了,但是在整合DB2就需要另起一行,以下是同一个yml文件 先配置MySQL,代码如下 spring: datasour ...
- 九、springboot整合rabbitMQ
springboot整合rabbitMQ 简介 rabbitMQ是部署最广泛的开源消息代理. rabbitMQ轻量级,易于在内部和云中部署. 它支持多种消息传递协议. RabbitMQ可以部署在分布式 ...
- 八、springboot整合Spring Security
springboot整合Spring Security 简介 Spring Security是一个功能强大且可高度自定义的身份验证和访问控制框架.它是保护基于Spring的应用程序的事实标准. Spr ...
最新文章
- 多款激光雷达性能评估
- OpenCASCADE:使用 XSTEPDRAW
- Android Studio: Debug Android SDK Source Code
- 使用PHP应用查询SAP HANA Express Edition里的数据
- 【绝对干货】kafkastream广告
- CentOS7.0 安装 tomcat-9.0
- 数据库表的字段中含空格怎么办?
- python独立log示例_带有Python示例的math.log1p()方法
- php 主进程子进程,PHP中的子进程的任何等价物?
- 【京东科技】视觉基础研究部研究型实习生招聘
- aspcms模板转php,aspcms转换zzzcms,aspcms迁移数据,aspcms替换模板,aspcms模板转换-下载-zzzcms官网-开源免费建站系统...
- 自己动手构造编译系统:编译、汇编与链接2.1.4 语义分析
- 【Vue3.0】—V- model‘ directives require no argument.
- python编程狮app题库_Python编程狮-零基础学Python App Storessa
- TangerineWallpaper for Mac(高清橘子壁纸) 中文版
- 【吴恩达机器学习】学习笔记——梯度下降
- 哈工大离散数学期末试题2021回忆版
- 软件开发模型:瀑布模型,增量模型,原型模型,螺旋模型,喷泉模型,敏捷开发模型
- linux安装RarLinux
- win7如何安装IIS,三种方法任你选(图文教程)
热门文章
- 流处理引擎:ksql
- html打开ppt自动播放,如何让ppt文档打开自动播放_让ppt文档打开自动播放的方法-系统城...
- 报错:Error creating bean with name ‘serverEndpointExporter‘ defined in class path resource [group/oneo
- [软件]Safe3 Web漏洞扫描系统企业版v10.1 破解版
- CVPR2020论文分方向整理之检测篇(代码/论文解读/136篇打包下载)
- EasyPoi导出Excel实现标记颜色
- PS制作透明的BMP图片
- 雷电2接口_厉害!跟Type-C长得一毛一样的雷电3,原来区别这么大,别搞混了
- win10 pycharm小写变大写,键盘输入错乱
- NLP专题直播 | 详谈Transformer, BERT, ALBERT, XLNet(ALBERT第一作者亲自讲解)