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 接管,没有重复执行建表。
常用命令
所有命令必须通过环境变量传入连接串,仓库中不保存数据库密码:
$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 - MySQL:8.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。