Flyway 入门使用指南(多环境配置版)
1️⃣ 安装与准备
1.1 下载与安装 Flyway
-
下载地址:Flyway Desktop
-
安装完成后,包含:
- Flyway Desktop GUI
- Flyway CLI
1.2 数据库准备
- 创建开发和生产数据库:
CREATE DATABASE erp_dev;
CREATE DATABASE erp_prod;
2️⃣ 创建 Flyway 项目
2.1 项目目录结构
D:\Data\flyway\erp/
├─ sql/
│ └─ V1__init.sql
├─ conf/
│ ├─ flyway-dev.conf # 开发环境配置
│ └─ flyway-prod.conf # 生产环境配置
└─ .flyway/
2.2 配置 Flyway(按环境)
开发环境配置:conf/flyway-dev.conf
# SQL 脚本目录
flyway.locations=filesystem:sql
# 数据库连接
flyway.url=jdbc:mysql://localhost:3306/erp_dev
flyway.user=root
flyway.password=你的密码
生产环境配置:conf/flyway-prod.conf
# SQL 脚本目录
flyway.locations=filesystem:sql
# 数据库连接
flyway.url=jdbc:mysql://localhost:3306/erp_prod
flyway.user=root
flyway.password=你的密码
每个环境单独维护配置文件,避免误操作生产数据库。
2.3 使用命令指定环境
# 开发环境
flyway -configFiles=conf/flyway-dev.conf info
flyway -configFiles=conf/flyway-dev.conf migrate
# 生产环境
flyway -configFiles=conf/flyway-prod.conf info
flyway -configFiles=conf/flyway-prod.conf migrate
3️⃣ 编写迁移脚本
3.1 初始化数据库
sql/V1__init.sql 示例:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
3.2 新增字段迁移
sql/V2__add_age_to_users.sql 示例:
ALTER TABLE users ADD COLUMN age INT;
4️⃣ 执行迁移
4.1 查看迁移状态
flyway -configFiles=conf/flyway-dev.conf info
- Applied:已应用
- Pending:待执行
- Current version:当前数据库版本
4.2 执行迁移
flyway -configFiles=conf/flyway-dev.conf migrate
- Flyway 自动执行 Pending 的迁移
- 更新
flyway_schema_history表
5️⃣ 切换环境
- 开发环境:
-configFiles=conf/flyway-dev.conf - 生产环境:
-configFiles=conf/flyway-prod.conf
使用不同配置文件即可安全切换环境,保证配置独立。
6️⃣ 自动生成初始化 SQL(社区版替代方案)
# 导出表结构
mysqldump -u root -p --no-data erp_dev > V1__init.sql
# 导出表结构 + 数据
mysqldump -u root -p erp_dev > V1__init.sql
- 放入
sql/目录,Flyway 执行即可
7️⃣ 常用命令速查
| 命令 | 功能 |
|---|---|
flyway info | 查看迁移状态 |
flyway migrate | 执行所有 Pending 迁移 |
flyway clean | 清空数据库(仅开发环境) |
flyway validate | 校验迁移文件和数据库版本一致性 |
flyway baseline | 给已有数据库打基线(已有表不重复执行历史迁移) |
8️⃣ 注意事项
- 每次数据库修改都必须创建新迁移文件,不可修改已应用脚本
- 先在开发环境验证通过,再迁移到生产环境
- 社区版 Flyway 不支持自动生成迁移,企业版可用 Autopilot
- 可在 CI/CD 流水线中调用 CLI,实现自动化部署
&spm=1001.2101.3001.5002&articleId=152318177&d=1&t=3&u=9acd58ac0d1248a4952de8e24a409850)
886

被折叠的 条评论
为什么被折叠?



