feat(g3fo-db-ops): replace MCP MySQL with Python db_ops tool, add connection timeout
Made-with: Cursor
This commit is contained in:
@@ -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**
|
||||
|
||||
Reference in New Issue
Block a user