Files
soul-yongping/.cursor/skills/mysql-direct/SKILL.md
2026-03-14 14:37:17 +08:00

4.4 KiB
Raw Blame History

name, description
name description
soul-mysql-direct Soul 创业派对 MySQL 直接操作。MCP 无法连接时用 db-exec 脚本执行 SQL。ALTER TABLE、迁移、字段增减。Use when 数据库操作, MCP 连不上, 增减字段, 执行迁移.

Soul 创业派对 - MySQL 直接操作 Skill

MCP MySQL 因端口非 3306 无法连接,或需要执行数据库字段增减、迁移、修复时,使用本 Skill。通过 db-exec 脚本读取 soul-api 的 .env 中的 DB_DSN,直接执行 SQL无需 MCP。


1. 何时使用本 Skill

  • MCP MySQL 连接失败(端口非 3306、网络不通等
  • soul-api 需要增减数据库字段,需执行 ALTER TABLE
  • 需要执行迁移 SQL、数据修复、紧急 DDL/DML
  • 用户提供账户密码,要求直接操作数据库

2. 凭证来源(按优先级)

来源 说明
环境变量 DB_DSN 运行时 DB_DSN=xxx node run.js "SQL"
参数 --dsn= node run.js --dsn="user:pass@tcp(host:port)/db" "SQL"
soul-api/.env 自动读取 DB_DSN(格式含端口,如 @tcp(host:14413)/db

安全:凭证只从 .env 或环境变量读取,不得写入 Skill 或提交到仓库


3. 执行方式

3.1 安装依赖(首次)

cd .cursor/scripts/db-exec && npm install

3.2 执行单条 SQL

cd e:\Gongsi\Mycontent
node .cursor/scripts/db-exec/run.js "SELECT 1"
node .cursor/scripts/db-exec/run.js "DESCRIBE orders"
node .cursor/scripts/db-exec/run.js "ALTER TABLE users ADD COLUMN new_field VARCHAR(64) DEFAULT ''"

3.3 执行 SQL 文件

node .cursor/scripts/db-exec/run.js -f migrations/20260225_add_xxx.sql

3.4 指定 DSN覆盖 .env

node .cursor/scripts/db-exec/run.js --dsn="user:pass@tcp(host:14413)/db" "SELECT 1"

4. Agent 执行流程

当用户要求「增减数据库字段」「直接操作 MySQL」「执行迁移」时

  1. 确认凭证soul-api/.env 中是否有 DB_DSN?若无,请用户提供或设置环境变量。
  2. 编写 SQL:按需求写 ALTER TABLEINSERTUPDATE 等。
  3. 执行cd 项目根目录 && node .cursor/scripts/db-exec/run.js "SQL"
  4. 同步 model:若改了表结构,同步修改 soul-api 的 internal/model 对应结构体。

5. DSN 格式说明

soul-api 的 DB_DSN 格式:

user:password@tcp(host:port)/database?charset=utf8mb4&parseTime=True
  • 端口:写在 tcp(host:port) 中,支持非 3306如 14413
  • 密码含特殊字符:需 URL 编码(@%40#%23 等)。

6. 与 MCP 的配合

场景 推荐方式
MCP 可连接(端口已正确配置) 优先用 mcp_MySQL_* 工具
MCP 无法连接(端口/网络问题) 用本 Skill + db-exec 脚本
生产库操作 务必谨慎,建议先备份或本地测试

MCP 配置参考:开发文档/8、部署/Soul-MySQL-MCP配置说明.md(连接串方式可带端口)。


7. 与 soul-api 的配合

  • 执行 ALTER TABLE 后,必须同步修改 internal/model 中的 GORM 结构体。
  • 迁移 SQL 建议放在 soul-api/scripts/soul-api/migrations/,便于版本管理。

8. 迁移脚本最佳实践(吸收 vip_roles 经验)

新增表或字段时,编写可重复执行或幂等的 SQL 脚本:

场景 写法 说明
新建表 CREATE TABLE IF NOT EXISTS xxx (...) 幂等,重复执行不报错
新增列 ALTER TABLE xxx ADD COLUMN yyy ... MySQL 不支持 IF NOT EXISTS重复执行会报错可单独执行或注释掉已执行部分
插入默认数据 INSERT IGNORE INTO xxx (name, sort) VALUES (...) 配合 UNIQUE(name) 防重复;不指定 id 让 AUTO_INCREMENT 生效
脚本位置 soul-api/scripts/add-xxx.sql 命名清晰,便于部署时按顺序执行

完整流程1) 编写 SQL 脚本 → 2) 同步修改 internal/model → 3) 执行迁移脚本node .cursor/scripts/db-exec/run.js -f soul-api/scripts/add-xxx.sql)→ 4) 重启 soul-api。

重要GORM AutoMigrate 不一定自动新增列(取决于启动时机与连接),Model 新增字段后必须显式执行 ALTER 脚本,否则会报 Unknown column 'xxx' in 'field list'


创建时间2026-02
适用MCP 无法连接时的 MySQL 直接操作、字段增减、迁移执行