{"record":{"id":"ab6c00bc106ca11a","repo":"alibaba/spring-ai-alibaba","slug":"error-ab6c00","errorCode":null,"errorMessage":"创建评估器失败","messagePattern":"创建评估器失败","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/EvaluatorServiceImpl.java","lineNumber":63,"sourceCode":"    @Override\n    public Evaluator create(EvaluatorCreateRequest request) {\n        log.info(\"创建评估器: {}\", request);\n\n        // 构建DO对象\n        EvaluatorDO evaluatorDO = EvaluatorDO.builder()\n                .name(request.getName())\n                .description(request.getDescription())\n                .createTime(LocalDateTime.now())\n                .updateTime(LocalDateTime.now())\n                .build();\n\n        // 插入数据库\n        int result = evaluatorMapper.insert(evaluatorDO);\n        if (result > 0) {\n            log.info(\"评估器创建成功: {}\", evaluatorDO.getId());\n            return Evaluator.fromDO(evaluatorDO);\n        } else {\n            throw new RuntimeException(\"创建评估器失败\");\n        }\n    }\n\n    @Override\n    public PageResult<Evaluator> list(EvaluatorListRequest request) {\n        log.info(\"查询评估器列表: {}\", request);\n\n        int pageNumber = request.getPageNumber() != null ? request.getPageNumber() : 1;\n        int pageSize = request.getPageSize() != null ? request.getPageSize() : 10;\n        long offset = (pageNumber - 1L) * pageSize;\n\n        List<EvaluatorDO> evaluatorDOList = evaluatorMapper.selectList(request.getName(), offset, pageSize);\n\n        List<Evaluator> evaluatorList = evaluatorDOList.stream()\n                .map(Evaluator::fromDO)\n                .map(evaluator -> {\n                    EvaluatorVersionDO evaluatorVersionDO = evaluatorVersionMapper.selectLatestVersionByEvaluatorId(evaluator.getId());\n                    if (evaluatorVersionDO != null) {","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/alibaba/spring-ai-alibaba/blob/f82da0b50f35744c13968191be2b1cd2452ef550/spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/EvaluatorServiceImpl.java#L45-L81","documentation":"EvaluatorServiceImpl.create() inserts the evaluator via evaluatorMapper.insert(evaluatorDO) and throws RuntimeException(\"创建评估器失败\") (\"failed to create evaluator\") when the insert returns <= 0 affected rows. The domain validation already passed, so this signals the database rejected or silently skipped the INSERT.","triggerScenarios":"INSERT violating a DB constraint (NOT NULL column, unique name/index on evaluator, FK to a nonexistent owner/dataset); table schema drift after migration; mapper XML/annotation insert statement misconfigured.","commonSituations":"Creating an evaluator whose type/name duplicates an existing row under a unique constraint; missing required columns after a schema upgrade; inserting into the wrong table because of a copied mapper config.","solutions":["Check server logs / enable MyBatis SQL logging and inspect the underlying SQLIntegrityConstraintViolationException or duplicate-key error.","Verify all required evaluator fields are set before insert (name, type, etc.) and that any referenced IDs exist.","Confirm the evaluator table schema matches the entity (run pending migrations)."],"exampleFix":"// before\nservice.create(requestWithNameThatAlreadyExists); // duplicate key -> 0 rows -> RuntimeException\n// after\nif (evaluatorMapper.findByName(request.getName()) == null) {\n    service.create(request);\n}","handlingStrategy":"try-catch","validationCode":"if (request.getName() == null || request.getType() == null) {\n    throw new IllegalArgumentException(\"name and type are required to create an evaluator\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    return service.create(request);\n} catch (RuntimeException e) {\n    // inspect cause for DataIntegrityViolationException / duplicate key\n    log.error(\"Evaluator insert failed\", e);\n    throw new ResponseStatusException(HttpStatus.CONFLICT, \"evaluator could not be created (duplicate or constraint?)\");\n}","preventionTips":["Uniquely name evaluators to avoid duplicate-key failures.","Populate all NOT NULL entity fields before create.","Enable SQL logging in dev to see the underlying constraint violation.","Keep DB migrations in sync with the evaluator entity schema."],"tags":["database","insert-failed","evaluator","constraint-violation"],"backgroundTag":"database-write-failed","analyzedSha":"f82da0b50f35744c13968191be2b1cd2452ef550","analyzedAt":"2026-09-09T15:32:42.421Z","contentChangedAt":"2026-09-09T15:32:42.421Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}