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 手动安装步骤(通用)
- 下载压缩包:从官网或 GitHub 获取
flyway-community-<version>-<platform>.tar.gz(Linux/macOS)或.zip(Windows)。 - 解压到目标目录:建议统一放在
/opt/flyway(Linux)、/usr/local/flyway(macOS)或C:\flyway(Windows)。 - 确认目录结构:解压后应包含以下核心子目录和文件。
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
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」。
- 在「系统变量」中点击「新建」,变量名
FLYWAY_HOME,变量值C:\flyway\flyway-10.x.x。 - 找到
Path变量,点击「编辑」→「新建」,添加%FLYWAY_HOME%。 - 依次点击「确定」保存。
验证环境变量:打开新终端窗口,执行
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 驱动失败(离线环境需手动将驱动放入
• 环境变量未生效,尝试重启终端或使用绝对路径重试。
• JDK 未安装或版本低于 17(Flyway 10.x 要求 Java 17+)。
• 网络代理导致首次下载 H2 驱动失败(离线环境需手动将驱动放入
jars/ 目录)。• 环境变量未生效,尝试重启终端或使用绝对路径重试。
4.4 安装验证流程总览
4.5 安装后目录与关键文件说明
理解 Flyway 安装目录的结构有助于后续的配置管理和故障排查。下表列出最常打交道的文件和目录:
| 路径 | 作用 | 工程实践建议 |
|---|---|---|
bin/flyway |
主执行脚本(Linux/macOS) | 加入 PATH 或创建软链接 |
bin/flyway.cmd |
主执行脚本(Windows) | 确保 %FLYWAY_HOME%\bin 在 Path 中 |
conf/flyway.conf |
默认全局配置文件 | 不直接修改,通过项目级配置文件覆盖 |
jars/ |
放置 JDBC 驱动和扩展 JAR | 离线环境需手动放入对应数据库驱动 |
sql/ |
默认迁移脚本目录 | 建议在项目中指定独立目录,不依赖默认位置 |
工程实践要点:
• 不要将项目迁移脚本放在 Flyway 安装目录的
• 将
• 在 CI/CD 流水线中优先使用 Docker 镜像
• 不要将项目迁移脚本放在 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 |