flyaway guide
下面是一段适合直接放入 Colleen README 的简洁中文示例,符合生产级最佳实践,并基于 Flyway。
---
## 数据库迁移(Flyway)
Colleen 使用 Flyway 管理数据库结构迁移。应用启动时会自动执行尚未应用的迁移脚本。
---
### 目录结构
将迁移脚本放入:
```text
resources/db/migration/
```
示例:
```text
resources/db/migration/
V001__create_users_table.sql
V002__add_index_to_users_email.sql
```
---
### 迁移脚本示例
```sql
-- V001__create_users_table.sql
CREATE TABLE IF NOT EXISTS users (
id BIGSERIAL PRIMARY KEY,
email TEXT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
```
```sql
-- V002__add_index_to_users_email.sql
-- flyway:executeInTransaction=false
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_users_email
ON users(email);
```
---
### 命名规则
迁移文件必须遵循以下格式:
```text
V<版本号>__<描述>.sql
```
示例:
```text
V001__create_users_table.sql
V002__add_email_column.sql
V003__create_user_index.sql
```
规则:
* 版本号必须唯一且按顺序递增
* 已执行的迁移文件禁止修改
* 数据库结构变更必须通过新增迁移文件完成
---
### 工作原理
应用启动时,Colleen 会自动执行所有未应用的迁移脚本,然后再启动 HTTP 服务。
Flyway 会在数据库中创建 `flyway_schema_history` 表,用于记录迁移历史。
---
### 最佳实践
* 每个迁移只做一件事
* 为索引和约束使用明确的名称
* 优先使用非破坏性变更(如 `ADD COLUMN`)
* 避免删除列或表,除非明确必要
* 不要修改已执行的迁移文件
---
如果你愿意,我也可以提供一个**完整的 README 官方推荐章节版本**,包含:
* Colleen 自动迁移说明
* 开发环境 vs 生产环境建议
* 推荐 migration 命名策略(避免团队冲突)