Files
model-platform/migrations/README.md
T

72 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Migrations
MySQL 8 的 Alembic 迁移目录。
当前数据库设计基线位于 `4/model_platform_schema.sql`
## V1 基线
- Alembic`1.18.5`
- 基线版本:`20260724_0001`
- 迁移文件:`versions/20260724_0001_v1_schema_baseline.py`
- 业务表:26 张
- 外键:71 个
- 索引:94 个
- `upgrade()`:可以从空 MySQL 8 数据库建立完整 V1 Schema。
- `downgrade()`:按反向依赖顺序删除 26 张业务表。
现有 `model_platform` 数据库原本由 V1 DDL 建立,结构校验一致后已使用
`alembic stamp head` 接管,没有重复执行建表。
## 常用命令
所有命令必须通过环境变量传入连接串,仓库中不保存数据库密码:
```powershell
$env:DATABASE_URL = "mysql+asyncmy://<user>:<password>@<host>:3306/<database>?charset=utf8mb4"
alembic -c alembic.ini current
alembic -c alembic.ini check
alembic -c alembic.ini upgrade head
```
迁移发布后不得直接修改旧版本;表结构变化应新增 revision,并评审自动生成的
数据类型、约束、索引、默认值和回滚顺序。
## 第 8 小步验收记录
- 执行日期:2026-07-24
- 目标服务:Docker Compose `mysql`
- 数据库:`model_platform`
- MySQL8.0.36
- 空库升级:通过
- 模型与数据库结构校验:26 张表、71 个外键、差异 0
- `alembic check``No new upgrade operations detected`
- 回滚到 base:通过,剩余业务表 0
- 临时测试数据库:验收后已删除
- 现有开发库版本:`20260724_0001 (head)`
## 第 9 小步数据迁移
旧版 `文件1/platform_data/system.json` 已通过
`data/migrate_system_json.py` 事务化迁移到 MySQL
- `roles`2 行;
- `permissions`13 行;
- `role_permissions`21 行;
- `users`4 行;
- `audit_logs`26 行。
迁移工具默认 dry-run,显式 `--apply` 才写库;重复执行不会重复写入。
## 第 10 小步 Workspace 迁移
旧版 `文件1/server.py` 中的 `WORKSPACE_DEFINITIONS` 已通过
`data/migrate_legacy_workspaces.py` 事务化迁移到 MySQL
- `workspaces`2 行;
- `workspace_members`4 行;
- 已有 `audit_logs.workspace_id`:按用户唯一 Workspace 关系补齐 26 行。
迁移工具使用 AST 读取静态常量,不执行旧版服务代码;默认 dry-run,显式
`--apply` 才写库。重复执行与后端镜像内隔离 dry-run 的变更数均为 0。