{"record":{"id":"c17062128107ef35","repo":"iflytek/astron-agent","slug":"8520-database-table-query-data-failed","errorCode":"8520","errorMessage":"database.table.query.data.failed","messagePattern":"database\\.table\\.query\\.data\\.failed","errorType":"error_code","errorClass":"BusinessException","httpStatus":null,"severity":"error","filePath":"console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/database/DatabaseService.java","lineNumber":879,"sourceCode":"                    dbInfo.getDbId(),\n                    DBOperateEnum.SELECT.getCode(),\n                    dto.getExecDev());\n\n            String countDml = \"SELECT COUNT(*) AS count FROM \" + table;\n            Long total = (Long) coreSystemService.execDML(\n                    countDml,\n                    UserInfoManagerHandler.getUserId(),\n                    SpaceInfoUtil.getSpaceId(),\n                    dbInfo.getDbId(),\n                    DBOperateEnum.SELECT_TOTAL_COUNT.getCode(),\n                    dto.getExecDev());\n\n            page.setTotal(total == null ? 0 : total);\n            page.setRecords(maps);\n            return page;\n        } catch (Exception ex) {\n            log.error(\"Failed to query table data, params={}\", JSONObject.toJSONString(dto), ex);\n            throw new BusinessException(ResponseEnum.DATABASE_TABLE_QUERY_DATA_FAILED);\n        }\n    }\n\n\n    public void importTableData(Long tbId, Integer execDev, MultipartFile file) {\n        dataPermissionCheckTool.checkTbBelong(tbId);\n        try {\n            DbTable dbTable = dbTableMapper.selectById(tbId);\n            DbInfo dbInfo = dbInfoMapper.selectById(dbTable.getDbId());\n\n            List<DbTableField> dbTableFields = dbTableFieldMapper.selectList(new QueryWrapper<DbTableField>().lambda()\n                    .eq(DbTableField::getTbId, tbId)\n                    .orderByDesc(DbTableField::getCreateTime));\n\n            // 1) read Excel -> rows\n            List<Map<String, Object>> rows = new ArrayList<>();\n            DBExcelReadListener listener = new DBExcelReadListener(\n                    dbTableFields,","sourceCodeStart":861,"sourceCodeEnd":897,"githubUrl":"https://github.com/iflytek/astron-agent/blob/5e758547a83371a5a4b29dadf4ac03e8dd527635/console/backend/toolkit/src/main/java/com/iflytek/astron/console/toolkit/service/database/DatabaseService.java#L861-L897","documentation":"Thrown by DatabaseService.selectTableData when querying paginated table data fails with any exception. Code 8520, message 'database.table.query.data.failed'. Wraps failures of the rendered SELECT (dialect quoting, count query, page mapping) into one business error.","triggerScenarios":"Calling selectTableData(DbTableSelectDataDto) when the generated SQL fails: bad filter/sort values that survive validation, dialect quoting error on an odd table name, DB connection failure, or count-query mismatch.","commonSituations":"Sort/filter referencing a dropped column; table renamed concurrently; DB timeout under heavy load; invalid pagination offsets.","solutions":["Check log 'Failed to query table data, params={...}' for the SQL and root-cause stack trace.","Validate dto filters/sort fields still exist in current table field metadata.","Retry in case of transient DB issues; check DB health/timeout settings.","Verify the table name renders correctly for the configured dialect (quoting issues with reserved words)."],"exampleFix":"// before\nPage<JSONObject> page = databaseService.selectTableData(dto); // dto.sortField=\"orde r\" (renamed column)\n// after\nList<DbTableField> fields = getFields(dto.getTbId());\nSet<String> names = fields.stream().map(DbTableField::getName).collect(Collectors.toSet());\nif (dto.getSortField() != null && !names.contains(dto.getSortField())) {\n    dto.setSortField(null); // fall back to default ordering\n}\nPage<JSONObject> page = databaseService.selectTableData(dto);","handlingStrategy":"validation","validationCode":"Set<String> names = fields.stream().map(DbTableField::getName).collect(Collectors.toSet());\nif (dto.getSortField() != null && !names.contains(dto.getSortField())) dto.setSortField(null);\nif (dto.getFilters() != null) dto.getFilters().keySet().forEach(k -> { if (!names.contains(k)) throw new IllegalArgumentException(\"bad filter: \" + k); });","typeGuard":null,"tryCatchPattern":"try {\n    return databaseService.selectTableData(dto);\n} catch (BusinessException ex) {\n    if (\"database.table.query.data.failed\".equals(ex.getMessage())) {\n        log.warn(\"query failed; check filters/sort against current schema\");\n    }\n    throw ex;\n}","preventionTips":["Validate filter/sort fields against current table metadata","Clamp pagination size/offset to sane ranges","Retry once on transient DB errors"],"tags":["database","query","pagination"],"backgroundTag":"database-query-failed","analyzedSha":"5e758547a83371a5a4b29dadf4ac03e8dd527635","analyzedAt":"2026-09-12T08:03:51.356Z","contentChangedAt":"2026-09-12T08:03:51.356Z","schemaVersion":2},"datasetVersion":"2026-09-19T12:17:13.211Z"}