技术解析 | 用户实践 | 社区月报
专题详解 |案例库| 开发者故事
成为博主 |技术分享
加入OceanBase|招聘动态
论坛答疑|技术分享|提Issue或建议
加入用户组 | 加入开发者组
想请教一下MCP根据什么来生成SQL(查询)语句。
我举个例子:
检查scxx这个数据库中是否有备注是“科技创新”的表,如果有,归纳总结
因为我的数据库表名无规则的随机字符串,只能依赖表的描述comments来告知LLM(或MCP),然后我发现生成了一个错误的SQL:
参数: {"query": "SELECT table_name, comments FROM information_schema.tables WHERE table_schema = 'scxx' AND (table_name LIKE '%科技创新%') OR comments LIKE '%科技创新%';"}
然后报错:
SQL 错误 [1054] [42S22]: Unknown column ‘comments’ in ‘where clause’
所以我现在面临的困境是: 1. 数据库表名无意义,没法用 2. 数据库表comment写点内容但是不能直接生成正确的SQL
求助,谢!
实际实验下来,如果在system prompt中写一点示例SQL,或者说明,还是能够很好的查出来的。但是没办法原生直查comment好像(如上,语法报错)。这差不多可以解燃眉之急。
MCP服务的SQL是大模型生成的,可以通过添加系统提示的方式来改善SQL生成,比如“首先,列出你需要查询的表和字段。然后,确定查询条件。最后,编写 SQL 语句”
关键是我觉得我的prompt已经很清晰了,用户侧应该只能写到这个程度了吧,所以我才猜测MCP是不是还是本身还要优化一次?
谢谢
学习总结经验
我是来学习的
与用的大模型有关,cluade 大模型的简单直接会先 show tables,再 show create xxx 获取表详细信息。
学习学习
学习
认真听讲
+1