Files
model-platform/migrations

Migrations

MySQL 8 的 Alembic 迁移目录。

当前数据库设计基线位于 4/model_platform_schema.sql

V1 基线

  • Alembic1.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
  • MySQL8.0.36
  • 空库升级:通过
  • 模型与数据库结构校验:26 张表、71 个外键、差异 0
  • alembic checkNo new upgrade operations detected
  • 回滚到 base:通过,剩余业务表 0
  • 临时测试数据库:验收后已删除
  • 现有开发库版本:20260724_0001 (head)

第 9 小步数据迁移

旧版 文件1/platform_data/system.json 已通过 data/migrate_system_json.py 事务化迁移到 MySQL

  • roles2 行;
  • permissions13 行;
  • role_permissions21 行;
  • users4 行;
  • audit_logs26 行。

迁移工具默认 dry-run,显式 --apply 才写库;重复执行不会重复写入。

第 10 小步 Workspace 迁移

旧版 文件1/server.py 中的 WORKSPACE_DEFINITIONS 已通过 data/migrate_legacy_workspaces.py 事务化迁移到 MySQL

  • workspaces2 行;
  • workspace_members4 行;
  • 已有 audit_logs.workspace_id:按用户唯一 Workspace 关系补齐 26 行。

迁移工具使用 AST 读取静态常量,不执行旧版服务代码;默认 dry-run,显式 --apply 才写库。重复执行与后端镜像内隔离 dry-run 的变更数均为 0。