{"record":{"id":"8cbbf72a81f47b51","repo":"alibaba/spring-ai-alibaba","slug":"failed-to-create-experiment","errorCode":null,"errorMessage":"Failed to create experiment","messagePattern":"Failed to create experiment","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/ExperimentServiceImpl.java","lineNumber":88,"sourceCode":"        // 构建实验实体\n        ExperimentDO experimentDO = ExperimentDO.builder()\n                .name(request.getName())\n                .description(request.getDescription())\n                .datasetId(request.getDatasetId())\n                .datasetVersionId(request.getDatasetVersionId())\n                .datasetVersion(request.getDatasetVersion())\n                .evaluationObjectConfig(request.getEvaluationObjectConfig())\n                .evaluatorConfig(request.getEvaluatorConfig())\n                .status(String.valueOf(ExperimentStatus.RUNNING))\n                .progress(0)\n                .createTime(LocalDateTime.now())\n                .updateTime(LocalDateTime.now())\n                .build();\n\n        // 插入数据库\n        int result = experimentMapper.insert(experimentDO);\n        if (result <= 0) {\n            throw new RuntimeException(\"Failed to create experiment\");\n        }\n\n        log.info(\"实验创建成功: {}\", experimentDO.getId());\n        \n        // 异步启动实验执行\n        startExperimentExecution(experimentDO);\n        \n        return Experiment.fromDO(experimentDO);\n    }\n\n    @Override\n    public PageResult<Experiment> list(ExperimentListRequest request) {\n        log.info(\"查询实验列表: {}\", request);\n\n\n        ExperimentStatus status = null;\n        if (StringUtils.hasText(request.getStatus())) {\n            try {","sourceCodeStart":70,"sourceCodeEnd":106,"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/ExperimentServiceImpl.java#L70-L106","documentation":"Thrown by ExperimentServiceImpl.create when experimentMapper.insert(experimentDO) returns <= 0 rows affected, meaning the experiment row was not written to the database. It signals a failed persistence step during experiment creation.","triggerScenarios":"Insert affected 0 rows due to a constraint violation, missing required column data, schema drift, or a database error converted by MyBatis into a 0-row update count.","commonSituations":"experiment table schema missing new columns added in code; foreign key to a non-existent dataset/model; DB connection failing mid-request; running against a read-only replica.","solutions":["Check application logs for the underlying SQL exception around the insert","Validate referenced entities (dataset, model, evaluator) exist before insert","Run database migrations so the schema matches the current code","Throw a typed ExperimentCreateException and map DB constraint errors to 4xx responses"],"exampleFix":"// before\nint result = experimentMapper.insert(experimentDO);\nif (result <= 0) {\n    throw new RuntimeException(\"Failed to create experiment\");\n}\n// after\nint result = experimentMapper.insert(experimentDO);\nif (result <= 0) {\n    throw new ExperimentCreationException(\"Experiment insert affected 0 rows\"); // -> 500 with context\n}","handlingStrategy":"try-catch","validationCode":"if (request.getDatasetId() != null && datasetService.getById(request.getDatasetId()) == null) throw new IllegalArgumentException(\"dataset not found\");","typeGuard":null,"tryCatchPattern":"try { experimentService.create(request); } catch (RuntimeException e) { log.error(\"experiment create failed\", e); throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, \"experiment persistence failed\", e); }","preventionTips":["Keep DB migrations aligned with code","Validate foreign-key references before insert","Monitor logs for SQL exceptions on insert"],"tags":["database","insert","experiment"],"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"}