EnhancedErrorGuidance.java
3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.xly.util;
/**
* 更详细的错误分类引导提示词
*/
public class EnhancedErrorGuidance {
public static String splitString = " OLDSQL ";
/**
* 根据错误类型生成针对性的引导信息
*/
public static String getErrorGuidance(String errorMessageAll) {
StringBuilder guidance = new StringBuilder();
String errorMessage = errorMessageAll.split(splitString)[0];
if (errorMessage.contains("Unknown column")) {
guidance.append("【字段不存在错误】\n");
guidance.append("- 错误原因:SQL中使用了表中不存在的字段\n");
guidance.append("- 修复方法:从以下表结构中选择正确的字段名\n");
guidance.append(" {{tableStruct}}");
guidance.append("\n- 注意:字段名区分大小写,请核对拼写");
} else if (errorMessage.contains("Table doesn't exist")) {
guidance.append("【表不存在错误】\n");
guidance.append("- 错误原因:SQL中使用了不存在的表名\n");
guidance.append("- 修复方法:检查表名拼写,确保与传入的表名完全一致\n");
} else if (errorMessage.contains("Syntax error")) {
guidance.append("【SQL语法错误】\n");
guidance.append("- 错误原因:SQL语句不符合MySQL语法规范\n");
guidance.append("- 常见问题:\n");
guidance.append(" 1. 关键词拼写错误(SELEC、FORM等)\n");
guidance.append(" 2. 缺少必要的关键词(JOIN、ON等)\n");
guidance.append(" 3. 括号不匹配\n");
guidance.append(" 4. 字符串缺少引号\n");
} else if (errorMessage.contains("Column not found in ON clause")) {
guidance.append("【JOIN关联字段错误】\n");
guidance.append("- 错误原因:ON条件中使用的字段不存在\n");
guidance.append("- 修复方法:检查JOIN条件字段是否正确\n");
} else if (errorMessage.contains("Non unique table/alias")) {
guidance.append("【表别名重复错误】\n");
guidance.append("- 错误原因:多个表使用了相同的别名\n");
guidance.append("- 修复方法:为每个表使用唯一的别名\n");
} else if (errorMessage.contains("Unknown table")) {
guidance.append("【未知表错误】\n");
guidance.append("- 错误原因:SQL中引用了未在FROM/JOIN中声明的表\n");
guidance.append("- 修复方法:确保所有使用的表都已正确JOIN\n");
} else if (errorMessage.contains("Incorrect integer value")) {
guidance.append("【数据类型不匹配错误】\n");
guidance.append("- 错误原因:字符串值赋给了数字字段\n");
guidance.append("- 修复方法:数字类型不加引号,字符串类型加单引号\n");
} else if(errorMessage.contains("SQL EMPTY")){
guidance.append("【生成SQL】\n");
guidance.append("- 错误原因:生成的SQL语句为空\n");
guidance.append("- 修复方法:请重新生成\n");
} else {
guidance.append("【未知错误】\n");
guidance.append("- 错误信息:").append(errorMessage).append("\n");
guidance.append("- 请仔细检查SQL语句的每一个部分\n");
}
return guidance.toString();
}
}