feat(g3fo-db-ops): replace MCP MySQL with Python db_ops tool, add connection timeout

Made-with: Cursor
This commit is contained in:
2026-03-11 09:27:19 +08:00
parent 8e2afda170
commit 23df8ffd75
5 changed files with 634 additions and 26 deletions
@@ -32,14 +32,20 @@ g3fo-db/
#### 执行 SQL 阶段
由于 MySQL MCP 不支持使用 `DELIMITER` 的存储过程,执行时可以使用其他方法插入或更新相同的数据:
使用 **db_ops.py**(Python 数据库工具,替代 MCP MySQL)执行 SQL:
1. **使用直接的 INSERT/REPLACE 语句**:
- 使用 `INSERT INTO` 或 `REPLACE INTO` 语句直接插入数据
1. **批量执行含 DELIMITER 的存储过程文件**:
- 使用 `python scripts/db_ops.py batch_execute --file path/to/file.sql`
- db_ops.py 支持 DELIMITER,可正确解析并执行存储过程
2. **或使用 call_procedure 调用已存在的存储过程**:
- `python scripts/db_ops.py call_procedure InsertSystemMenu --params "..." "..." "..."`
3. **或使用直接的 INSERT/REPLACE 语句**:
- 使用 `execute` 命令执行 `INSERT INTO` 或 `REPLACE INTO`
- 确保数据与存储过程生成的数据完全一致
- 需要手动处理 ID 生成、权限记录创建等逻辑
2. **数据一致性要求**:
4. **数据一致性要求**:
- 菜单数据必须插入到 `m_system_menus` 表
- 路由数据必须插入到 `m_system_routes` 表
- 相应的权限记录必须插入到 `m_admin_role_rights` 或 `m_user_role_rights` 表
@@ -328,12 +334,13 @@ Cursor 自动执行以下操作:
#### 步骤 4: 执行SQL
如果用户确认无误,使用 MySQL MCP 执行 SQL 语句:
如果用户确认无误,使用 **db_ops.py** 执行 SQL 语句:
1. 连接到数据库
2. 执行 SQL 语句
3. 验证执行结果
4. 如果成功,继续下一步;如果失败,报告错误并停止
1. 在终端执行:`python .claude/skills/g3fo-db-ops/scripts/db_ops.py execute "SQL"` 或 `batch_execute --file path`
2. 默认连接:host 192.168.3.233, user root, password afe123456;可通过 `--database g3fo_base` 或 `g3fo_trade` 指定库
3. 用户可提供不同连接信息时,使用 `--host`, `--port`, `--user`, `--password`, `--database` 覆盖
4. 验证执行结果(JSON 输出中 `"success": true`)
5. 如果成功,继续下一步;如果失败,报告错误并停止
#### 步骤 5: 询问是否提交到Git
@@ -764,8 +771,9 @@ feat: {简短描述}
**重要:增加菜单和路径权限必须使用存储过程文件**
1. **执行 SQL 阶段**:
- 由于 MySQL MCP 不支持 `DELIMITER`,可以使用直接的 `INSERT INTO` 或 `REPLACE INTO` 语句执行
- 确保数据与存储过程生成的数据完全一致
- 使用 **db_ops.py** 的 `batch_execute --file` 执行含 DELIMITER 的存储过程文件
- 或使用 `call_procedure` 调用已存在的存储过程
- 或使用 `execute` 配合直接的 `INSERT INTO` / `REPLACE INTO`,确保数据与存储过程生成的数据完全一致
2. **提交到 Git 阶段**:
- **必须使用存储过程文件生成的完整 SQL**