flyway使用说明

article/2025/11/10 8:00:57
Flyway是一款数据库迁移(migration)工具。简单点说,就是在你部署应用的时候,帮你执行数据库脚本的工具。Flyway支持SQL和Java两种类型的脚本,你可以将脚本打包到应用程序中,在应用程序启动时,由Flyway来管理这些脚本的执行,这些脚本被Flyway称之为migration.

引入Flyway之后的应用部署流程大概是这样的:
开发人员将应用程序打包
应部署人员拿到应用部署包,备份、替换,以完成应用程序升(Flyway将自动执行升级/备份脚本)

xds项目集成flyway:—
1.maven引入jar包:
org.flywaydb
flyway-core


版本号也可以使用pluginManagement默认版本,没必要自己指定版本

2.yml文件配置:
flyway:
enabled: true #是否开启flyway,默认true.
baseline-on-migrate: true #当迁移时发现目标schema非空,而且带有没有元数据的表时,是否自动执行基准迁移,默认false.
clean-on-validation-error: true #当发现校验错误时是否自动调用clean,默认false.
sql-migration-prefix: V #迁移文件的前缀,默认为V
sql-migration-suffixes: .sql #移脚本的后缀,默认为.sql
locations: -classpath:db/migration/mysql #迁移脚本的位置,默认db/migration.可以多个,可以给每个环境使用不同位置
ignore-missing-migrations: true #忽略缺失的升级脚本验证
更多参考:
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.

3.flyway默认的版本flyway_schema_history表:

CREATE TABLE flyway_schema_history(installed_rank INT NOT NULL,version VARCHAR(50),description VARCHAR(200) NOT NULL,type VARCHAR(20) NOT NULL,script VARCHAR(1000) NOT NULL,checksum INT,installed_by VARCHAR(100) NOT NULL,installed_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP,execution_time INT NOT NULL,success TINYINT(1) NOT NULL,PRIMARY KEY (installed_rank),INDEX flyway_schema_history_s_idx (success))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

特别注意事项:

1. sql 命名规范:命名为:Vx.x.x__ xxx.sql数据库文件。V+版本号+双下划线+描述.结束符(默认sql) , V大写,中间是两个下划线(__),注意是两个下滑线一起_ _ 
2.迁移脚本sql的位置:使用idea使用.创建文件夹路径时一定要注意,例如创建a/b/c.file文件时,使用idea创建文件夹a.b会默认 a.b是一个文件名,要确认检查脚本文件是否在正确路径下
3.Fayway在每次应用启动时检测是否有需要执行的升级脚本:脚本文件以V作为前缀的,后跟版本号,版本号格式可以为为大版本号(1、2),也可以包含小版本号(1.1或1_1),但是需统一,不能有些有小版本号,有些没有,  前缀为 V的脚本不可重复执行,每个脚本只会被执行一次。已经执行过的历史版本脚本不能再修改,除非清除flayway的历史记录,重新执行升级脚本,这在生产环境不允许, 前缀为 R的脚本,后面无版本号,如R__update_version.sql,可以重复执行,每次内容发生变化时重启后就会执行
4. Flyway需要创建存储脚本升级记录用的表,因此需要建表权限,也可以事先建好。默认表名为flyway_schema_history  sql脚本需要有相应的版本号,例如如果想让 V2__init.sql执行 需要有V1__init.sql作为一个基准对比,然后flyway才会执行相应的sql脚本。所以V开头的文件只能新增  
5. flyway 开发规范
a. 已经提交的 flyway 脚本不可删除;
b. 已经提交的 flyway 脚本不可修改;
c. 已经提交的 flyway 脚本可重复执行

例如这些版本号都可以:
1个
001
5.2
205.68
20130115113556
2013.1.15.11.35.56
2013.01.15.11.35.56

在这里插入图片描述

说明:
Flyway 最常见的就是版本化迁移,每一个版本的迁移都有一个版本,一个描述和一个校验和。版本必须是唯一的。该描述为您提供了信息,使您能记住每个迁移的工作。效验和用于检测意外更改。版本化迁移仅按顺序应用一次。但是请务必保证脚本文件的正确性!


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

相关文章

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 中的概念可查阅 官方文档,这里挑选一些重要的进行简单介绍。 Schema History Table Flyway 对数据库进行版本控制的方式,是在指定数据库中创建一张表,即 Schema History Table(默认为 flyway_schem…

Flyway详解以及Springboot集成Flyway

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

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;因此数据表…

Flyway——配置和使用(入门)

文章目录 介绍测试环境依赖引入配置数据库连接启动类设置脚本项目结构概览项目启动&#xff0c;观察日志和数据库结果测试R开头的脚本直接重启项目修改 R__add_user_info.sql 后重启 变更数据库字段验证 V 只能执行一次的问题验证 R 可执行多次验证只有一个_会报错技能扩充参考…

flyway的快速入门教程

目录 一、简单介绍 二、为什么要使用flyway 三、flyway是如何工作的 四、如何使用flyway 1、先要初始化一个SpringBoot项目&#xff0c;引入依赖 2、在application.yml中添加相关配置 3、根据配置文件中填写的脚本存放路径&#xff0c;创建文件夹 4、添加需要运行的sql…

Flyway详解(使用说明及避坑指南、一文搞懂flyway)

一、简介 1.1 Flyway是什么&#xff1f; Flyway是一款开源的数据库版本管理工具&#xff0c;可以实现管理并跟踪数据库变更&#xff0c;支持数据库版本自动升级&#xff0c;而且不需要复杂的配置&#xff0c;能够帮助团队更加方便、合理的管理数据库变更。 例&#xff1a;创建…

MySQL数据库的集群解决方案(一)

读写分库架构 我们一般应用对数据库而言都是“读多写少”&#xff0c;也就说对数据库读取数据的压力比较大&#xff0c;有一个思路就是说采用数据库集群的方案&#xff1a; 其中一个是主库&#xff0c;负责写入数据&#xff0c;我们称之为&#xff1a;写库&#xff1b; 其它都是…