200-database-deploy

star 1

数据库部署与验证技能。当需要执行数据库DDL时触发:(1)执行DDL建表语句, (2)执行增量迁移脚本, (3)验证表结构一致性。完成后自动调用 201-database-deploy-review。

axeon By axeon schedule Updated 6/14/2026

name: 200-database-deploy description: 数据库部署与验证技能。当需要执行数据库DDL时触发:(1)执行DDL建表语句, (2)执行增量迁移脚本, (3)验证表结构一致性。完成后自动调用 201-database-deploy-review。 alwaysApply: false author: "axeon(23231269@qq.com)" version: "1.0.0"

数据库DDL执行与验证

项目环境检测

从当前目录向上查找 project-info.md,最多 3 层,找到后记为 PROJECT_ROOT。详见 检测方法与前置检查 第一步、第二步第三步(uniweb system 环境检测):从 ~/.uniweb/uniweb-system.config 读取 MySQL 连接参数。未找到 → 提示用户先执行 0-init

角色职责

角色 职责 智能体
主导 DDL执行与验证 java-developer
协作 架构确认 system-architect

输入

输入项 来源路径 说明
DDL文件 PROJECT_ROOT/database/database-ddl.sql 200阶段产出的全量建表语句
迁移脚本 PROJECT_ROOT/database/migrations/*.sql 增量DDL变更文件
设计文档 PROJECT_ROOT/database/database-design.md 表结构设计文档(验证参照)
评审报告 PROJECT_ROOT/database/reviews/REVIEW-DB-*.md 201评审通过的报告

前置条件

  • 201-database-design-review 评审通过(评分 ≥ 95分)
  • 目标数据库可连接
  • DDL文件存在且非空

执行流程

1. 环境检查

检查项 方式 预期
数据库连接 mysql -h {host} -u {user} -p{pass} -e "SELECT 1" 连接成功
数据库存在 SHOW DATABASES LIKE '{db_name}' 已存在或可创建
DDL文件存在 检查文件路径 文件存在且非空
迁移目录存在 检查目录 目录存在(可为空)

2. 获取数据库连接信息

2.1 读取配置文件

尝试从 ~/.uniweb/uniweb-system.config 读取 MySQL 连接参数:

参数 配置项 说明
主机 MYSQL_HOST 数据库主机地址
端口 MYSQL_PORT 数据库端口(默认3306)
用户名 MYSQL_ROOT_USERNAME 管理员用户名
密码 MYSQL_ROOT_PASSWORD 管理员密码

读取逻辑

if (配置文件存在) {
  读取参数
  向用户确认(密码显示为 ***)
} else {
  提示用户手动输入
}

2.2 确认连接信息

AskUserQuestion({
  questions: [
    {
      question: "请确认数据库连接信息(地址: {host}:{port}, 数据库: {project_name}, 用户: {user})",
      header: "连接信息",
      options: [
        { label: "全部确认", description: "参数正确,继续执行" },
        { label: "需要修改", description: "有参数需要修改" }
      ],
      multiSelect: false
    },
    {
      question: "选择执行模式?",
      header: "执行模式",
      options: [
        { label: "首次建库", description: "全新数据库,执行完整DDL" },
        { label: "增量迁移", description: "已有数据库,执行迁移文件" }
      ],
      multiSelect: false
    }
  ]
})

3. DDL执行

数据库名生成规则

db_name = project_name.replace('-', '_')

首次全量执行

mysql -h {host} -P {port} -u {user} -p{pass} {db_name} < PROJECT_ROOT/database/database-ddl.sql

增量迁移执行

  1. 列出 migrations/ 目录下最新的5个 SQL 文件(按修改时间倒序)
  2. 使用 AskUserQuestion 让用户选择或手动输入:
AskUserQuestion({
  questions: [{
    question: "请选择要执行的迁移文件?",
    header: "迁移文件",
    options: [
      { label: "最新文件", description: "使用最新的迁移文件" },
      { label: "手动输入", description: "输入自定义文件路径" }
    ],
    multiSelect: false
  }]
})
  1. 执行选中的 SQL 文件:
mysql -h {host} -P {port} -u {user} -p{pass} {db_name} < "{selected_file}"

执行原则

原则 说明
先建库再建表 确保数据库存在后再执行DDL
按顺序执行 迁移文件按文件名时间戳排序
失败即停 任一SQL执行失败,停止后续执行并报告
不自动删库 禁止 DROP DATABASE,需人工确认

4. Schema验证

验证项 SQL 预期
表数量 SHOW TABLES 与设计文档一致
表结构 SHOW CREATE TABLE {table} 字段、类型、索引与DDL一致
字段数量 DESCRIBE {table} 每张表字段数与设计文档匹配
索引 SHOW INDEX FROM {table} 索引存在且类型正确
通用字段 检查每张表 id/saas_id/state/create_date/modify_date 齐全

5. 初始数据(如有)

检查 PROJECT_ROOT/database/ 下是否有初始数据脚本(如 init-data.sql),有则执行。

6. 生成执行报告

报告位置PROJECT_ROOT/database/deploy/DDL-EXECUTION-REPORT-{YYMMDDHHMM}.md

# DDL执行报告

## 执行信息
- 执行日期: {YYYY-MM-DD HH:mm}
- 目标数据库: {host}/{db_name}
- 执行模式: 全量/增量

## 执行结果
| 文件 | 状态 | 耗时 | 说明 |
|------|------|------|------|
| database-ddl.sql | ✅/❌ | {ms} | {说明} |

## Schema验证
| 验证项 | 结果 | 详情 |
|--------|------|------|
| 表数量 | ✅/❌ | 预期{N}张,实际{M}张 |
| 字段一致性 | ✅/❌ | {不一致的表} |
| 索引完整性 | ✅/❌ | {缺失的索引} |

## 执行统计
- 成功SQL: {N}条
- 失败SQL: {N}条
- 警告: {N}条

⚠️ 完成验证(强制,全自动执行)

开发工作完成后,立即按以下顺序自动执行

  1. 强制调用 201-database-deploy-review
  2. 如果评审不通过(< 95),自动修复问题,然后回到步骤 1(最多 5 轮)
  3. 直到评审通过(≥ 95),才向用户报告最终结果

此流程全自动执行:中间不暂停、不询问、不汇报。 未收到通过确认前,禁止结束本技能任务。

输出要求

执行报告: PROJECT_ROOT/database/deploy/DDL-EXECUTION-REPORT-{YYMMDDHHMM}.md

评审报告: PROJECT_ROOT/database/deploy/reviews/REVIEW-DDL-EXECUTION-{YYMMDDHHMM}.md

流转关系

输入: 200设计产出 + 201评审通过
    ↓
200-database-deploy
    ↓
201-database-deploy-review
    ↓
通过 → 进入阶段2-Step2(210-java-uniweb-init 等)
不通过 → 修复DDL并重新执行

参考

Install via CLI
npx skills add https://github.com/axeon/uw-spec --skill 200-database-deploy
Repository Details
star Stars 1
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator