Flyway 命令

Flyway 命令

Flyway 是一个强大的数据库版本控制工具,支持通过命令行工具来管理数据库迁移。Flyway 的命令行工具提供了一系列实用的命令,帮助开发人员和运维人员方便地执行数据库迁移、回滚、验证等操作。通过这些命令,Flyway 可以自动管理数据库的结构变化,使数据库版本化,确保不同环境下数据库状态的一致性。

1. Flyway 安装和配置

在使用 Flyway 命令行工具之前,首先需要安装 Flyway。Flyway 支持多种操作系统,并提供了简单的安装方式。

1.1 下载与安装

可以从 Flyway 官网 下载 Flyway 的命令行工具包。

下载完成后,将工具包解压到任意目录。例如在 macOS 或 Linux 上,可以执行以下命令:

wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/8.5.13/flyway-commandline-8.5.13-linux-x64.tar.gz
tar -xzf flyway-commandline-8.5.13-linux-x64.tar.gz

在 Windows 系统上,解压后通过 cmd 或 PowerShell 进入解压目录。

1.2 配置环境变量

为了方便在命令行中使用 Flyway,可以将 Flyway 的执行路径添加到系统的 PATH 环境变量中。

例如在 macOS 或 Linux 系统中,编辑 .bashrc.zshrc 文件,添加以下内容:

export PATH=/path/to/flyway:$PATH

保存并执行 source .bashrc 使配置生效。

在 Windows 系统中,可以通过 系统属性 -> 高级系统设置 -> 环境变量 来添加 Flyway 路径到 PATH

1.3 配置文件

Flyway 需要数据库连接信息才能工作,可以在 Flyway 目录下的 conf/flyway.conf 文件中进行配置:

flyway.url=jdbc:mysql://localhost:3306/mydb
flyway.user=root
flyway.password=yourpassword
flyway.locations=filesystem:sql/migrations
  • flyway.url:数据库连接 URL。
  • flyway.user:数据库用户名。
  • flyway.password:数据库密码。
  • flyway.locations:迁移文件的存储位置,默认是 filesystem:sql/migrations,即 Flyway 安装目录下的 sql/migrations 文件夹。

2. Flyway 常用命令

Flyway 提供了多个命令,用于管理数据库迁移操作。常用的命令包括 migratecleaninfovalidatebaselinerepair 等。

2.1 flyway migrate —— 执行迁移

migrate 命令是 Flyway 最重要的命令,用于执行所有未执行的迁移文件,更新数据库的结构。每当有新的迁移文件被添加,migrate 命令会按照版本顺序依次执行这些文件中的 SQL 或 Java 逻辑。

命令格式

flyway migrate

执行后,Flyway 会扫描 locations 指定的目录,检查哪些迁移文件尚未执行,并依次执行它们。执行完成后,Flyway 会将这些迁移记录存储在 flyway_schema_history 表中。

应用场景

  • 在开发过程中,每次有新的数据库变更时,可以通过 migrate 命令将变更应用到当前环境的数据库中。
  • 在部署到生产环境之前,通过 migrate 将最新的数据库版本应用到生产数据库。
2.2 flyway clean —— 清空数据库

clean 命令用于清空数据库中的所有表、视图、存储过程、触发器等对象,将数据库恢复到一个干净的状态。它适用于测试环境中频繁重置数据库的场景。

命令格式

flyway clean

执行该命令后,Flyway 会删除数据库中的所有对象,包括 Flyway 自己的 flyway_schema_history 表。

注意clean 命令会永久删除数据库中的所有数据和结构,不能在生产环境中使用。

应用场景

  • 在开发或测试环境中,频繁变更数据库结构时,通过 clean 命令重置数据库。
  • 在做大量迁移测试时,使用 clean 清除所有历史记录和数据。
2.3 flyway info —— 查看迁移信息

info 命令用于查看当前数据库的迁移状态。它会显示所有的迁移文件,包括哪些文件已经执行,哪些文件尚未执行,以及每个迁移文件的执行时间、状态等。

命令格式

flyway info

执行后,Flyway 会输出一张表,显示所有迁移的详细信息。例如:

+-----------+---------+---------------------+----------+---------------------+---------+
| Category  | Version | Description         | Type     | Installed On        | State   |
+-----------+---------+---------------------+----------+---------------------+---------+
| Versioned | 1       | Create user table   | SQL      | 2024-09-08 12:34:56 | Success |
| Versioned | 2       | Add email column    | SQL      | 2024-09-08 12:35:12 | Success |
| Pending   | 3       | Add index to email  | SQL      |                     | Pending |
+-----------+---------+---------------------+----------+---------------------+---------+

应用场景

  • 在执行迁移之前,使用 info 命令检查当前数据库的状态,确认哪些迁移已经成功,哪些尚未执行。
  • 排查迁移执行中的问题,查看具体的错误信息。
2.4 flyway validate —— 验证迁移文件

validate 命令用于验证迁移文件的完整性,确保已经执行过的迁移文件没有被修改,且所有待执行的迁移文件都是有效的。

命令格式

flyway validate

执行后,Flyway 会检查所有迁移文件的校验和(Checksum),如果某个已经执行过的文件被修改,Flyway 会报错并提示有潜在的数据库不一致问题。

应用场景

  • 在执行新的迁移之前,使用 validate 确保所有迁移文件的版本和内容都是一致的。
  • 作为 CI/CD 流水线的一部分,自动验证迁移文件的完整性,确保没有手动修改迁移文件的错误。
2.5 flyway baseline —— 创建基准点

baseline 命令用于为已有的数据库创建一个基准点,以便将 Flyway 引入到已经存在的数据库中。执行 baseline 后,Flyway 会将当前数据库的状态标记为某个版本,并从该版本开始应用后续的迁移。

命令格式

flyway baseline

可以通过 flyway.baselineVersion 配置来指定基准点的版本号,默认是 1

flyway baseline -baselineVersion=2

应用场景

  • 已有一个运行中的数据库,但数据库版本管理未使用 Flyway,可以通过 baseline 命令将当前数据库状态作为基准点,并在之后使用 Flyway 进行版本控制。
2.6 flyway repair —— 修复历史记录

repair 命令用于修复 flyway_schema_history 表中的记录。它会重新计算已经执行的迁移文件的校验和,并删除任何失败的迁移记录。

命令格式

flyway repair

在某些情况下,迁移可能因为某些错误(如网络问题或数据库连接中断)而失败,此时可以使用 repair 命令来修复这些记录。

应用场景

  • 数据库迁移过程中,某些迁移因为网络中断或其他问题而导致失败,可以通过 repair 来修复迁移记录。
  • 当需要手动修改迁移记录时,使用 repair 重新校验和修复数据。
2.7 flyway undo —— 回滚迁移

undo 命令用于撤销已经执行的迁移,恢复数据库到之前的版本状态。Flyway 支持为每个迁移文件编写相应的回滚脚本,以便在需要时撤销某次迁移。

命令格式

flyway undo

应用场景

  • 在测试或开发环境中,当发现某个迁移存在问题时,可以通过 undo 撤销这次迁移的更改。

3. 其他命令

除了上述常用命令,Flyway 还提供了一些其他命令,如:

  • flyway clean:清空数据库。
  • flyway migrate:执行所有未执行的迁移。
  • flyway info:查看当前数据库的迁移状态。

4. 常见的命令组合

在实际项目中,开发者经常会组合使用多个 Flyway 命令,以确保数据库的状态正确。例如:

  • 迁移前检查

    flyway validate && flyway migrate
    

    先通过 validate 确保所有迁移文件的有效性,然后通过 migrate 执行迁移。

  • 迁移失败后的修复

    flyway repair && flyway migrate
    

    通过 repair 修复迁移记录,然后重新执行迁移。

5. 命令行参数与配置文件

Flyway 命令支持通过配置文件或命令行参数传递数据库连接信息和其他配置。常见的参数包括:

  • -url:指定数据库的 URL。
  • -user:指定数据库用户名。
  • -password:指定数据库密码。
  • -locations:指定迁移文件的路径。

例如,直接通过命令行参数传递数据库连接信息:

flyway -url=jdbc:mysql://localhost:3306/mydb -user=root -password=yourpassword migrate

结论

Flyway 提供了一系列强大的命令行工具,用于执行、验证、回滚和修复数据库迁移。通过这些命令,开发人员可以轻松管理数据库的版本化变更,确保数据库结构在不同环境中的一致性和稳定性。Flyway 命令行工具不仅简单易用,还支持灵活的配置,使其成为企业级项目中不可或缺的数据库管理工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149126.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

2024华为杯E题成品文章已出!

E题高速公路应急车道紧急启用模型 点击链接加入群聊【2024华为杯数学建模助攻资料】:http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kxtS4vwn3gcv8oCYYyrqd0BvFc7tNfhV7&authKeyedQFZne%2BzvEfLEVg2v8FOm%2BWNg1V%2Fiv3H4tcE6X%2FW6lCmkhaSaZV4PwQ%2FOVPDtF%2B&…

kismet和war driving具体准备(仅供无线安全学习)

war driving准备 一台笔记本 一个最好是双频的网卡,单频搜集信号少 我自己买的是http://e.tb.cn/h.grI4EmkDLOqQXHG?tkKZ5g3RVeH6f 如果经济条件允许可以去买大功率天线(我买的车载的 大概40db这样子 范围广) http://e.tb.cn/h.grCM0CQ6L…

Python Appium自动化操作抖音

1、功能介绍 使用Python和Appium给手机抖音上的同城模块自动评论,主要是通过模拟用户在抖音同城模块的操作,实现自动发送评论的功能。具体步骤如下: - 安装并配置好Python环境; - 安装Appium库,用于自动化操作手机应…

【CSS in Depth 2 精译_038】6.2 CSS 定位技术之:绝对定位

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结)第二章 相对单位(已完结)第三章 文档流与盒模型(已完结)第四章 Flexbox 布局(已…

大模型深入行业,正从“星星之火”走向“燎原之势”

2024年,当越来越多的企业从赶大模型的潮流与炫大模型的参数规模开始转移到行业落地时,华为携生态伙伴用大模型深耕行业的成果俨然遍地开花。 在9月19日华为全联接大会2024大会上同期举办的华为云AI用户峰会上,华为云为28个创新项目颁发了“A…

应用密码学第一次作业(9.23)

一、Please briefly describe the objectives of information and network security,such as confidentiality, integrity, availability , authenticity , and accountability The objectives of information and network security include: Confidentiality: Protecting se…

快手旗下——Kolors模型部署与使用指南

以下是按照要求重写后的 Kolors 模型部署与使用指南,文章风格偏技术性,但保持简洁和易懂的特点: Kolors 模型部署与使用指南 一、Kolors 简介 Kolors 是由快手 Kolors 团队开发的文本到图像生成模型,基于大规模的潜在扩散技术。…

vue-animate-onscroll动画库(可来回触发动画)

效果展示 ①触发一次动画 触发一次 ②触发多次动画 触发多次 1.什么是vue-animate-onscroll 它是一个 Vue 插件,用于在滚动时触发动画效果。它可以帮助开发者在用户滚动页面时,逐渐展示元素,增强用户体验。基本用法是通过在元素上添加特定的指…

Soul APP创始人张璐团队探讨新世代婚恋观:基于兴趣爱好的“轻相亲”正逐渐流行

近年来,随着社会经济的快速发展和文化观念的不断演变,婚恋观念正在经历显著变化。为深入了解当代年轻人对婚恋的态度与趋势,Soul APP创始人张璐团队与上海大学社会学青年研究团队合作,联合发布了《2024年青年婚恋观念及趋势调查报告》(以下简称“报告”)。该报告基于Soul APP用…

qml PathView入门

PathView是一个用于在用户界面中沿着定义的路径显示和滚动项目的视图组件。它提供了丰富的定制选项,允许开发者创建复杂的动画效果和自定义的滚动行为,特别适用于需要展示非线性排列项目的场景,如图片轮播、自定义滚动菜单等。 一、主要属性 …

[教程]如何在iPhone上启用中国移动/联通/电信RCS消息

目前 苹果已经在 iOS 18 中带来 RCS 富媒体消息的支持,该消息基于网络传递,用户可以通过 RCS 免费将消息发送到其他 iPhone 或 Android 设备。在苹果面向测试版用户推出的 iOS 18.1 Beta 版中,中国网络运营商包括中国移动、中国联通、中国电信…

JavaSE - 面向对象编程05

01 正则表达式 【1】概念:正则表达式是由一些特定字符组成的,代表的是一个规则。 【2】可以用来做什么? ① 用于校验数据格式的合法性 ② 用于在文本中爬取满足要求的内容 ③ 用于String类的replace方法,split方法的替换和分割 …

【学习笔记】Linux系统基础知识3 —— cd命令详解

一、前期准备 1.已经正确安装并成功进入Linux系统 说明:本实验采用的 Redhat 系统(因系统不一致,可能部分显示存在差异) 二、学习内容 提示:学习Linux系统基础命令 cd 命令详解 1、cd命令 1. 功能说明 cd 命令用…

Simple Calculator(算法初阶,代码基础,“纯”手撕)

简单计算器:仅适用无括号加减乘除,算法初阶,代码基础,不调库或模块“纯”手撕。 (笔记模板由python脚本于2024年09月22日 12:08:02创建,本篇笔记适合喜欢用python解决实际问题的coder翻阅) 【学习的细节是欢悦的历程】…

Qt中多语言的操作(以QtCreator为例)

1、首先,我们在代码中与文本相关的且需要支持多语言的地方,用tr来包含多语言key(多语言key是我们自己定义的),如下 //举例 QPushButton* btnnew QPushButton(this); btn->move(20,20); btn->resize(100,50); //…

在 deepin 上除了 Steam,还能怎么玩游戏?

查看原文 前段时间,很多朋友在 deepin 23 上实现了《黑神话:悟空》的通关,那么除了通过 Steam 玩 Windows 游戏之外,还有其他可以使用的游戏平台吗? 回答,当然是可以哒! 游戏平台介绍 今天介…

RHCSA认证-Linux(RHel9)-Linux入门

文章目录 概要一、创建、查看和编辑⽂本1.1 输出重定向1.2 vim编辑器1.3 shell 变量1.5 获取帮助 二、管理本地用户和组2.1 描述用户2.2 切换用户和赋权2.3 用户管理2.4 用户组管理2.5 密码策略 三、控制文件访问3.1 列出文件和文件权限3.2 更改文件权限和拥有者3.3 控制默认权…

昆明理工大学MBA工商管理上课方式

--昆工MBA考研、管理与经济学院、125100工商管理、125602项目管理、199管理类综合能力、F009 政治、F008政治项目管理概论

有关在.Net Core中以TEXT类型将Json格式字段存到数据库的学习

导言 在写个值日接口时发现值日表中的值日时段是可以分多段的,想了想可以使用Json类型来存,不过之前没接触过在后端操作Json格式存到数据库的情况,之后学也了解到了一下方法来实现,故记录一下。 过程 从前端到后端再到数据库的 JS…

千亿大数据平台——MySQL大数据优化

一、自增量的作用 1. 唯一性标识 - 为表中的每一行数据提供一个唯一的、自动生成的标识符,确保数据的唯一性和准确性。 2. 简化数据关联 - 在多个表之间进行关联操作时,自增量字段可以作为便捷的关联键,方便建立和维护表之间的关系…