EnhancedErrorGuidance.java 3.43 KB
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();
    }
}