Flyway学习和使用

article/2025/11/10 7:44:17

1、什么是Flyway

Flyway is an open-source database migration tool. It strongly favors simplicity and convention over configuration.

It is based around just 7 basic commands: Migrate, Clean, Info, Validate, Undo, Baseline and Repair.

Flyway是一款开源的数据库迁移工具。强力支持简单性和约束性而不是配置。

通俗来讲,我们的代码可以通过git或svn来进行版本管理,项目运行环境可以通过镜像或者dockerfile来创建,而Flyway就是用来进行数据库的版本管理的。

以前的工作流程:

  • 开发人员将应用程序打包,并整理好数据库脚本

  • 运维人员拿到部署包,先检查数据库脚本,进行备份、执行,再部署应用程序

引入Flyway:

  • 开发打包

  • 运维直接替换,不用管数据库的改动。脚本全交给Flyway执行


有了Flyway,所有开发人员能时刻关注DML、DDL对数据库的改变,持续集成会方便很多

相当于一个脚本管控工具,谁提交的,谁更改的,ddl还是dml语句,都可以进行追溯和管理

2、基本使用

  1. 创建一个基本的boot demo,并配置数据库

  2. 添加依赖,或也可以在新建boot demo的时候选择Flyway

<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>8.2.2</version>
</dependency>
  1. 在resource下新建db.migration文件夹,里面主要放脚本。

在这里插入图片描述

  1. 直接运行,可以看到
    启动信息:
    在这里插入图片描述

数据库:
可以发现,company和department是db.migration文件夹里的sql脚本创建的
flyway_schema_history表是Flyway自动创建的,用来标识版本
在这里插入图片描述

在这里插入图片描述

3、深入学习

1、[How Flyway works ](How Flyway works - Flyway by Redgate • Database Migrations Made Easy.)

2、[配置文件说明](Config Files - Config Files - Flyway by Redgate • Database Migrations Made Easy.)

3、[migrations命名](Migrations - Migrations - Flyway by Redgate • Database Migrations Made Easy.)

4、常用

1、常用配置

## 设定 db source 属性
spring.datasource.url=jdbc:mysql://localhost:3306/world
spring.datasource.username=root
spring.datasource.password=toor## 设定 flyway 属性 
spring.flyway.cleanDisabled = true # flyway 的 clean 命令会删除指定 schema 下的所有 table, 杀伤力太大了, 应该禁掉. 
spring.flyway.enabled = true# 启用或禁用 flyway 
spring.flyway.locations =classpath:db/migration# 设定 SQL 脚本的目录,多个路径使用逗号分隔, 比如取值为 classpath:db/migration,filesystem:/sql-migrations
spring.flyway.baselineOnMigrate=true# 如果指定 schema 包含了其他表,但没有 flyway schema history 表的话, 在执行 flyway migrate 命令之前, 必须先执行 flyway baseline 命令.# 设置 spring.flyway.baseline-on-migrate 为 true 后, flyway 将在需要 baseline 的时候, 自动执行一次 baseline. 
spring.flyway.baselineVersion=1 # 指定 baseline 的版本号,缺省值为 1, 低于该版本号的 SQL 文件, migrate 的时候被忽略. 
#spring.flyway.encoding=# Encoding of SQL migrations (default: UTF-8)
spring.flyway.table=flyway_schema_history_myapp# 设定 flyway 的 metadata 表名, 缺省为 flyway_schema_history
spring.flyway.outOfOrder=true# 开发环境最好开启 outOfOrder, 生产环境关闭 outOfOrder . 
#spring.flyway.schemas=# 需要 flyway 管控的 schema list, 缺省的话, 使用的时 dbsource.connection直连上的那个 schema, 可以指定多个schema, 但仅会在第一个schema下建立 metadata 表, 也仅在第一个schema应用migration sql 脚本. 但flyway Clean 命令会依次在这些schema下都执行一遍.

2、脚本命名
在这里插入图片描述

  • 开发环境建议采用时间戳的形式作为版本号。V20211215.14.48__V1.2_add_user_name.sql

  • 生产环境应该是手动merge开发环境的脚本,然后按正常版本号命名。V1.2___001_add_user_name.sql

3、不允许修改migration后的sql(Versioned Migraties)。可以修改可重复执行迁移(Repeatable Migrations)

4、spring.flyway.outOfOrder 取值 true /false
对于开发环境, 可能是多人协作开发, 很可能先 apply 了自己本地的最新 SQL 代码, 然后发现其他同事早先时候提交的 SQL 代码还没有 apply, 所以 开发环境应该设置 spring.flyway.outOfOrder=true, 这样 flyway 将能加载漏掉的老版本 SQL 文件; 而生产环境应该设置 spring.flyway.outOfOrder=false

5、多个系统公用要 DB schema
很多时候多个系统公用一个 DB schema , 这时候使用 spring.flyway.table 为不同的系统设置不同的 metadata 表, 缺省为 flyway_schema_history


http://chatgpt.dhexx.cn/article/d2fLKUPQ.shtml

相关文章

flyway baseline-version

背景 使用flyway进行数据库版本控制。 问题 flyway配置 # 当迁移发现数据库非空且存在没有元数据的表时&#xff0c;自动执行基准迁移&#xff0c;新建schema_version表baseline-on-migrate: true# 开始执行基准迁移时对现有的schema的版本打标签&#xff0c;默认值为1basel…

Ruoyi集成flyway后启动报错的解决方法

ruoyi系列框架是开源中非常好的源码平台&#xff0c;使用宽松的开源协议进行源代码的开放。不管是单体版、前后端分离甚至是微服务架构&#xff0c;均提供了相应的代码。基于ruoyi可以做自己的后台系统&#xff0c;也可以学习很多技术的集成。 而flyway是java里面的数据库脚本…

快速掌握和使用Flyway

什么是Flyway? 转载&#xff1a;https://blog.waterstrong.me/flyway-in-practice/ Flyway is an open-source database migration tool. It strongly favors simplicity and convention over configuration. Flyway是一款开源的数据库版本管理工具&#xff0c;它更倾向于规约…

flyway使用说明

Flyway是一款数据库迁移&#xff08;migration&#xff09;工具。简单点说&#xff0c;就是在你部署应用的时候&#xff0c;帮你执行数据库脚本的工具。Flyway支持SQL和Java两种类型的脚本&#xff0c;你可以将脚本打包到应用程序中&#xff0c;在应用程序启动时&#xff0c;由…

Flyway 入门教程

目录 一、简单介绍 二、Flyway使用场景 三、Flyway工作原理 四、Flyway如何校验文件 五、使用Flyway 5.1 引入依赖 5.2 添加配置 5.2.1 SpringBoot配置 5.2.2 SpringMVC配置 5.3 脚本准备 六、使用Maven插件 七、特别说明 一、简单介绍 Flyway 是一款开源的数据库…

SpringBoot引入Flyway,及Flyway简单了解

Flyway 中的常用概念 Flyway 中的概念可查阅 官方文档&#xff0c;这里挑选一些重要的进行简单介绍。 Schema History Table Flyway 对数据库进行版本控制的方式&#xff0c;是在指定数据库中创建一张表&#xff0c;即 Schema History Table&#xff08;默认为 flyway_schem…

Flyway详解以及Springboot集成Flyway

Flayway是一款数据库版本控制管理工具&#xff0c;&#xff0c;支持数据库版本自动升级&#xff0c;Migrations可以写成sql脚本&#xff0c;也可以写在java代码里&#xff1b;不仅支持Command Line和java api &#xff0c;也支持Build构建工具和Spring boot&#xff0c;也可以在…

spring-cloud集成数据库版本迁移工具flyway

spring-cloud集成数据库版本迁移工具flyway Flyway实现数据库版本同步有两种方式&#xff0c;一种就是直接导包&#xff0c;通过配置文件使用&#xff0c;还有一种就是自定义的方式。一 、依赖配置文件 1 flyway实现sql初始化 1.1 首先需要添加依赖 <!--mysql数据库版本…

Flyway 数据库版本控制

背景 在我们日常产品发布的过程中&#xff0c;代码的版本控制可以使用git、svn工具实现。对于数据库每当发布时会出现手动执行sql脚本进行升级数据库&#xff0c;中间经常出现一些漏写、错写情况&#xff0c;对数据库的版本与代码的版本不匹配&#xff0c;导致上线后出现数据库…

FlyWay入门教程

文章目录 Flyway1. 概述2. 工作原理与基本概念工作原理概述基本概念**[Migration(迁移)](https://flywaydb.org/documentation/concepts/migrations#naming)** 3. 安装和基本使用命令行安装使用命令 Java APISpring Boot Flyway Flyway by Redgate • 数据库迁移变得简单。 ---…

flyway的学习

Flyway 是一款开源的数据库版本管理工具。管理数据库变更的版本。 flyway工作流程如下&#xff1a; 项目启动&#xff0c;应用程序完成数据库连接池的建立后&#xff0c;Flyway自动运行。初次使用时&#xff0c;flyway会创建一个flyway_schema_history 表&#xff0c;用于记录…

Flyway的简单介绍及使用

Flyway的简单介绍及使用 一、开发时管理数据库遇到的问题&#xff1a; 现在开发一般都是团队开发&#xff0c;这样就会出现项目同步的问题&#xff0c;代码同步可以通过SVN工具管理起来&#xff0c;那数据库同步怎么办呢&#xff1f;理想的情况下&#xff0c;在开发新项目的时…

Flyway使用入门

Flyway简介 Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用&#xff0c;或者在Java应用程序中引入&#xff0c;用于管理我们的数据库版本。 在项目或产品中&#xff0c;很难一开始就把业务理清楚&#xff0c;把数据库表设计好&#xff0c;因此数据表也…

SpringBoot集成Flyway

1. 背景 Flyway是一个款数据库版本管理工具,通过集成Flyway可以实现启动项目时自动执行项目迭代升级所需Sql语句,从而减少升级项目时人工干预成本. 2. 集成Flyway pom文件引入依赖 <dependency><groupId>org.flywaydb</groupId><artifactId>flyway…

Flyway介绍和使用

一 使用背景 在我们日常产品发布的过程中&#xff0c;代码的版本控制可以使用git、svn工具实现。对于数据库每当发布时会出现手动执行sql脚本进行升级数据库&#xff0c;中间经常出现一些漏写、错写情况&#xff0c;对数据库的版本与代码的版本不匹配&#xff0c;导致上线后出…

Flyway简介

Flyway简介 总结&#xff1a;Flyway可以很方便的帮我们完成数据库部署和增量升级&#xff0c;很有用&#xff0c;但是版本回滚操作并不给力&#xff5e;&#xff5e;&#xff5e; 1、简介 1.1、Flyway是什么 Flyway是一款数据库迁移&#xff08;migration&#xff09;工具。简…

数据库版本管理工具 Flyway 使用

目录 一、简介 二、核心概念 1、Schema History Table 2、Migration 3、Versioned migrations 三、集成 SpringBoot 1、pom文件中引入依赖 2、application.yml配置 3、sql 脚本编写 四、初始化数据库 五、注意事项 一、简介 Flyway是一款开源的数据库版本管理工具&am…

Flyway简介及使用

Flyway简介及使用 1、简介 1.1 Flyway是什么&#xff1f; Flyway是一款开源的数据库版本管理工具&#xff0c;它更倾向于规约优于配置的方式。 Flyway可以独立于应用实现管理并跟踪数据库变更&#xff0c;支持数据库版本自动升级&#xff0c;并且有一套默认的规约&#xff0…

Flyway基础简介

1. 概述 Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。 自动升级&#xff08;自动发现更新项&#xff09;&#xff1a;Flyway 会将任意版本的数据库升级到最新版本。Flyway 可以脱离JVM 环境通过命令行执行&#xff0c;可以通过Ant 脚本执行&#…

flyway的学习总结

一、简单介绍 Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用&#xff0c;或者在Java应用程序中引入&#xff0c;用于管理我们的数据库版本。 在项目或产品中&#xff0c;很难一开始就把业务理清楚&#xff0c;把数据库表设计好&#xff0c;因此数据表…