fix(database): enforce Flyway migration governance
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# 数据库迁移规范
|
||||
|
||||
自有库结构由 Flyway 管理,运行时只扫描 `src/main/resources/db/migration`。
|
||||
|
||||
1. 已合并的 `V<N>__description.sql` 永不修改、删除或改名;Flyway 与测试都会校验历史 checksum。
|
||||
2. 每次结构或数据变更新增下一个连续版本,并同步新增 `sql/rollback/V<N>__description.down.sql`。
|
||||
3. Migration 只操作当前 svc schema,禁止包含 `CREATE DATABASE`、`USE` 和环境专属数据。
|
||||
4. DDL 优先向后兼容;删除字段或表必须先经过废弃版本。大表变更必须给出锁表时间与分批方案。
|
||||
5. `seed-dev.sql` 仅用于开发数据,不进入 Flyway。数据库首次创建使用 `bootstrap/create-database.sql`。
|
||||
6. 合并前必须运行 `./mvnw clean package`;部署启动时 Flyway 会再次 validate 并按版本迁移,失败则应用不会启动。
|
||||
|
||||
`baseline-on-migrate` 默认关闭,避免连错非空库时被静默接管。已有 V1 数据库首次接入时,显式设置 `SVC_FLYWAY_BASELINE_ON_MIGRATE=true`:Flyway 记录 V1 基线并只执行 V2 以后版本;确认生成 `flyway_schema_history` 后立即恢复为 `false`。空数据库无需开启,会正常执行全部版本。
|
||||
Reference in New Issue
Block a user