老年人教程: 数据库版本管理工具 Flyway使用文档

Flyway是一款开源数据库版本管理工具,支持多种数据库,包括Oracle、SQL Server等。它简化了数据库版本控制,允许通过SQL脚本或JAVA代码进行数据库变更。Flyway提供了诸如Migrate、Clean、Info等命令,方便用户管理和升级数据库。在新库中使用时,需执行`flyway baseline`建立版本基线。此外,Flyway Pro版提供回滚(undo)和错误覆盖功能,便于数据库维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图片

一、什么是Flyway ?

Flyway 是一款开源的数据库版本管理工具, 它更倾向于规约优于配置的方式。
Flyway 可以独立于应用实现管理并且跟踪数据库的变更。 支持数据库版本的自动升级,
自带有一套默认的规约,不需要复杂的配置。Migrations 可以写成SQL脚本,也可以集成到JAVA代码中,同时在分布式环境下能够安全可靠的升级数据库,支持失败恢复操作等。
而且flyway命令简单, 可以很快的上手使用。

Flyway主要基于6种基本命令:Migrate, Clean, Info, Validate, Baseline and Repair
目前支持的数据库主要有:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL(including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL(including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix.

关于Flyway 的优势,支持的数据库以及其他数据库版本工具对比,可阅读Flyway官方介绍


二、Flway 可以做什么 ?

当用户遵循规范存放好数据库脚本,程序启动的时候,Flyway会连接数据源对应的数据库,并按照版本号进行版本检查,如果不是最新版本,则自动执行升级脚本。

这意味着,当程序连接的是一个全新的数据库的时候,Flyway 会自动初始化应用所需的表结构和基础数据;或者当程序连接到一个落后几个版本的测试数据库的时候,Flyway 会自动帮用户升级到最新的表结构和基础数据。


三、Flway 的获取

Flyway 的获取可以通过(官方网站:https://flywaydb.org/download/) 找到下载地址.
官方网站提供三种不同的版本:

  • Community Edition : 社区版,此版本含有Flyway的核心功能
  • Pro Edition:专业版本,提供一些高级命令例如回滚等。
  • Enterprise Edition:企业版,此版本提供JDK 6的支持。

图片

备注: Flyway 基于jre运行环境, 但无需另外下载,flyway自带运行环境。


四、Flway 的目录结构

1. 概述

如下图所示, Flyway 包含以下
图片

  • conf 配置文件存放的地方
  • drivers 数据库连接驱动jar包存放的地方
  • jars 如果是通过java 进行数据库升级,将升级jar包放在此文件夹下
  • jre flyway 自带的jre运行环境
  • lib flyway 的代码库
  • sql 脚本文件存放的地方

2. sql 升级脚本存放

升级脚本在flyway中被称作 Migration , Migration 里面包含可执行的数据库脚本,用来进行数据库版本变更, 需要注意的是, 放在 sql 文件夹中的脚本, 需要按照 与Flyway约定的方式来命名脚本, Flyway 才能正确识别出你的脚本是用来干什么的, 是什么版本。 Flyway 根据你的脚本来进行分类 , 比如V开头的脚本是升级脚本, R开通的脚本是可重复执行的脚本,然后Flyway 会根据特定规则去对这些脚本进行排序, 然后一个个按顺序去执行它们。
sql 脚本命名类似于 V2__ADD_new_table.sql , 其中
V 是前缀, 位于文件命名的第一个字符,通常用来表示脚本的类型,此处代表是一个升级脚本
**2是版本号,**flyway 会根据此字符换来进行排序
__ 两个下划线是用来区分版本和版本描述的分隔符 , 两个下划线后面就接上这个脚本的描述说明
图片

  1. 总结

核心的目录 有 sql conf 这两个, 需要记住这两个目录的使用方法。


五、Flway 使用

  1. 配置好数据源

数据源配置可以参考下图 , 需要制定url 和账户密码, 如果不进行配置,会在每次连接的时候提示你进行输入
图片

  1. 在Flyway 根目录启动终端

windows 下
图片


六、Flyway 相关概念

在正式使用flyway 的命令之前,先对Flyway中会提及的概念做一个介绍,通过了解这些概念,可以帮我们快速掌握Flyway的使用方法

  1. Migrations

在Flyway 中, 对数据库的所有操作都被称之为 **Migrations **

  • migration 可以分为以下几类
  1. version migrations ( 版本升级 , 在Migrations命名中前缀为 V)
  2. undo migrations (版本回滚, 在Migrations命名中前缀为 U)
  3. Repeatable Migrations (可重复执行的操作 , 在Migrations命名中前缀为 R)

下图是基于SQL脚本的migrations的命名
图片

  • 执行方式又可以分为两种
  1. SQL_base Migrations (基于SQL脚本的Migrations)
  2. Java_base Migrations (基于JAVA代码的Migrations)
  • migrations 的状态
    | 状态名 | 状态解释 | 备注 |
    |:----|:----|:----|
    | pending | 准备状态中的Migrations , 还没被执行。 | 正常情况下,新版本未执行的脚本状态为 pending |
    | success | 成功被执行的migrations | |
    | | 如果数据库支持DDL事务,在操作失败后将不会有任何显示 | |
    | failed | 如果数据库不支持DDL事务,那么没有被成功执行的migrations会显示此状态,此时可能需要手动去处理DDL操作带来的变化 | |
    | undone | 执行版本回滚后会显示此状态 | 针对 回滚脚本 |
    | outdated | 自上次应用校验和更改后,可重复迁移被标记为过期,直到再次执行为止 | 针对 可重复执行脚本 |
    | future | 当Flyway发现一个版本高于最高已知版本的应用版本migrations时(这通常发生在软件的新版本已经成功migrations),该migrations被标记为未来。 | |
  1. Callbacks

Callbacks 是指回调函数,Callbacks 能够使你在整个migrations的生命周期中插入新的操作。

下面这些是Flyway 支持的操作:

Name Execution
beforeMigrate Before Migrate runs
beforeEachMigrate Before every single migration during Migrate
beforeEachMigrateStatement Flyway Pro Before every single statement of a migration during Migrate
afterEachMigrateStatement Flyway Pro After every single successful statement of a migration during Migrate
afterEachMigrateStatementError Flywa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值