4. Flyway 安装与配置:下载与安装 Flyway 命令行工具、配置环境变量、验证安装是否成功

Flyway 命令行工具(CLI)是执行数据库迁移最直接的方式,适用于本地开发、CI/CD 流水线以及容器化环境。本节将完整演示从下载、安装、环境变量配置到安装验证的全流程,确保你能够在任何主流操作系统上快速搭建 Flyway 运行环境。

4.1 下载与安装 Flyway 命令行工具

Flyway 官方提供两种分发方式:社区版(Community) 和 Teams/Enterprise 版。社区版完全免费且功能足以覆盖绝大多数工程实践。以下步骤以社区版最新稳定版本为例。

4.1.1 下载方式

方式 地址 / 命令 适用场景
官网下载 https://flywaydb.org/download 手动下载,适合首次安装
GitHub Releases https://github.com/flyway/flyway/releases 自动化脚本获取特定版本
Homebrew (macOS) brew install flyway macOS 开发者快速安装
SDKMAN (Linux/macOS) sdk install flyway 多版本管理,适合频繁切换
Docker docker pull flyway/flyway 容器化环境,无需本地安装

4.1.2 手动安装步骤(通用)

  1. 下载压缩包:从官网或 GitHub 获取 flyway-community-<version>-<platform>.tar.gz(Linux/macOS)或 .zip(Windows)。
  2. 解压到目标目录:建议统一放在 /opt/flyway(Linux)、/usr/local/flyway(macOS)或 C:\flyway(Windows)。
  3. 确认目录结构:解压后应包含以下核心子目录和文件。
flyway-10.x.x/
├── bin/                  # 可执行脚本(flyway / flyway.cmd)
├── conf/                 # 配置文件(flyway.conf)
├── jars/                 # JDBC 驱动及扩展 JAR 包
├── lib/                  # Flyway 运行时依赖库
├── licenses/             # 许可证文件
├── sql/                  # 默认迁移脚本存放目录(可自定义)
└── flyway.jar            # 主程序 JAR
最佳实践:将 Flyway 安装在无空格、无中文的路径下,避免因路径解析导致脚本执行异常。Linux 环境下建议创建软链接 ln -s /opt/flyway/flyway /usr/local/bin/flyway 以简化调用。

4.2 配置环境变量

配置环境变量的目的是让系统能够在任意路径下直接识别 flyway 命令,无需每次都切换到安装目录。以下按操作系统分别说明。

4.2.1 Linux / macOS

编辑 shell 配置文件(~/.bashrc、~/.zshrc 或 ~/.bash_profile),添加以下内容:

export FLYWAY_HOME=/opt/flyway/flyway-10.x.x
export PATH=$PATH:$FLYWAY_HOME

执行 source ~/.bashrc 使配置立即生效。

4.2.2 Windows

  1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」。
  2. 在「系统变量」中点击「新建」,变量名 FLYWAY_HOME,变量值 C:\flyway\flyway-10.x.x。
  3. 找到 Path 变量,点击「编辑」→「新建」,添加 %FLYWAY_HOME%。
  4. 依次点击「确定」保存。
验证环境变量:打开新终端窗口,执行 echo $FLYWAY_HOME(Linux/macOS)或 echo %FLYWAY_HOME%(Windows),确认输出为正确的安装路径。

4.3 验证安装是否成功

完成安装和环境变量配置后,通过以下三个步骤确认 Flyway 可正常使用。

4.3.1 检查版本信息

在终端中执行:

flyway --version

预期输出示例:

Flyway Community Edition 10.x.x by Redgate
See release notes here: https://flywaydb.org/documentation/usage/commandline/#release-notes

如果显示 command not found 或 不是内部或外部命令,请检查环境变量配置是否正确,或直接使用 $FLYWAY_HOME/flyway --version 测试。

4.3.2 查看帮助信息

执行以下命令确认所有子命令可用:

flyway --help

输出应包含 migrate、clean、info、validate、baseline、repair 等核心命令列表。

4.3.3 快速冒烟测试(连接空数据库)

使用内置的 H2 内存数据库进行无依赖验证:

flyway -url=jdbc:h2:mem:testdb -user=sa -password= info

预期输出:

Database: jdbc:h2:mem:testdb (H2 2.x)
Schema version: << Empty Schema >>

该命令不修改数据库,仅验证 Flyway 能否正常加载 JDBC 驱动、连接数据库并读取 schema 状态。

常见失败原因:
• JDK 未安装或版本低于 17(Flyway 10.x 要求 Java 17+)。
• 网络代理导致首次下载 H2 驱动失败(离线环境需手动将驱动放入 jars/ 目录)。
• 环境变量未生效,尝试重启终端或使用绝对路径重试。

4.4 安装验证流程总览

Flyway 安装验证流程 Flyway 安装验证流程 ① 下载压缩包 ② 解压到目标目录 ③ 配置环境变量 ④ 验证安装 flyway --version flyway --help flyway -url=jdbc:h2:mem:testdb info

4.5 安装后目录与关键文件说明

理解 Flyway 安装目录的结构有助于后续的配置管理和故障排查。下表列出最常打交道的文件和目录:

路径 作用 工程实践建议
bin/flyway 主执行脚本(Linux/macOS) 加入 PATH 或创建软链接
bin/flyway.cmd 主执行脚本(Windows) 确保 %FLYWAY_HOME%\bin 在 Path 中
conf/flyway.conf 默认全局配置文件 不直接修改,通过项目级配置文件覆盖
jars/ 放置 JDBC 驱动和扩展 JAR 离线环境需手动放入对应数据库驱动
sql/ 默认迁移脚本目录 建议在项目中指定独立目录,不依赖默认位置
工程实践要点:
• 不要将项目迁移脚本放在 Flyway 安装目录的 sql/ 下,应使用 flyway.locations 参数指向项目内的版本控制目录。
• 将 FLYWAY_HOME 和 PATH 配置写入团队共享的初始化脚本(如 setup_env.sh),确保所有开发者环境一致。
• 在 CI/CD 流水线中优先使用 Docker 镜像 flyway/flyway,避免每台构建机单独安装。

4.6 常见安装问题与排查

现象 原因 解决方案
Error: Java 17+ required JDK 版本过低或未安装 安装 JDK 17+ 并设置 JAVA_HOME
command not found 环境变量未正确配置 检查 PATH 是否包含 $FLYWAY_HOME
Unable to obtain driver 缺少对应数据库的 JDBC 驱动 将驱动 JAR 放入 jars/ 目录
Permission denied 脚本无执行权限(Linux/macOS) chmod +x $FLYWAY_HOME/bin/flyway