{"record":{"id":"61f1615a4353df66","repo":"flowable/flowable-engine","slug":"could-not-find-a-table-with-name-tablename-61f161","errorCode":null,"errorMessage":"Could not find a table with name '${tableName}'.","messagePattern":"Could not find a table with name '(.+?)'\\.","errorType":"http","errorClass":"FlowableObjectNotFoundException","httpStatus":404,"severity":"error","filePath":"modules/flowable-rest/src/main/java/org/flowable/rest/service/api/management/TableDataResource.java","lineNumber":79,"sourceCode":"    @ApiImplicitParams({\n            @ApiImplicitParam(name = \"start\", dataType = \"integer\", value = \"Index of the first row to fetch. Defaults to 0.\", paramType = \"query\"),\n            @ApiImplicitParam(name = \"size\", dataType = \"integer\", value = \"Number of rows to fetch, starting from start. Defaults to 10.\", paramType = \"query\"),\n            @ApiImplicitParam(name = \"orderAscendingColumn\", dataType = \"string\", value = \"Name of the column to sort the resulting rows on, ascending.\", paramType = \"query\"),\n            @ApiImplicitParam(name = \"orderDescendingColumn\", dataType = \"string\", value = \"Name of the column to sort the resulting rows on, descending.\", paramType = \"query\"),\n    })\n    @ApiResponses(value = {\n            @ApiResponse(code = 200, message = \"Indicates the table exists and the table row data is returned\"),\n            @ApiResponse(code = 404, message = \"Indicates the requested table does not exist.\")\n    })\n    @GetMapping(value = \"/management/tables/{tableName}/data\", produces = \"application/json\")\n    public DataResponse<List<Map<String, Object>>> getTableData(@ApiParam(name = \"tableName\") @PathVariable String tableName, @ApiParam(hidden = true) @RequestParam Map<String, String> allRequestParams) {\n        if (restApiInterceptor != null) {\n            restApiInterceptor.accessTableInfo();\n        }\n        \n        // Check if table exists before continuing\n        if (managementService.getTableMetaData(tableName) == null) {\n            throw new FlowableObjectNotFoundException(\"Could not find a table with name '\" + tableName + \"'.\", String.class);\n        }\n\n        String orderAsc = allRequestParams.get(\"orderAscendingColumn\");\n        String orderDesc = allRequestParams.get(\"orderDescendingColumn\");\n\n        if (orderAsc != null && orderDesc != null) {\n            throw new FlowableIllegalArgumentException(\"Only one of 'orderAscendingColumn' or 'orderDescendingColumn' can be supplied.\");\n        }\n\n        Integer start = null;\n        if (allRequestParams.containsKey(\"start\")) {\n            start = Integer.valueOf(allRequestParams.get(\"start\"));\n        }\n\n        if (start == null) {\n            start = 0;\n        }\n","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-rest/src/main/java/org/flowable/rest/service/api/management/TableDataResource.java#L61-L97","documentation":"The REST table data endpoint GET /management/tables/{tableName} verifies via managementService.getTableMetaData() that the requested database table exists before querying its rows. If the metadata lookup returns null, a FlowableObjectNotFoundException is thrown. This guards against querying arbitrary or misspelled table names.","triggerScenarios":"GET /management/tables/{tableName}?start=..&size=.. where {tableName} does not match any table exposed by managementService (e.g. typo like 'ACT_RU_TSK' instead of 'ACT_RU_TASK', or a table from another schema/database).","commonSituations":"Typo in table name; querying a table after the flowable schema version changed (e.g. ACT_ prefix tables renamed); pointing the REST app at a different database than expected; casing mismatch on case-sensitive databases (PostgreSQL).","solutions":["List valid tables with GET /management/tables and use an exact name from that list.","Fix the table name spelling/case to match the database schema (e.g. ACT_RU_TASK).","Verify the REST app's datasource points to the database containing the flowable tables.","Catch FlowableObjectNotFoundException (HTTP 404) in the client and handle missing-table gracefully."],"exampleFix":"// before\ncurl http://localhost:8080/flowable-rest/management/tables/ACT_RU_TSK\n// after\ncurl http://localhost:8080/flowable-rest/management/tables/ACT_RU_TASK","handlingStrategy":"validation","validationCode":"const tables = await fetch('/management/tables').then(r => r.json());\nif (!tables.data.some(t => t.name === tableName)) throw new Error(`Unknown table ${tableName}`);","typeGuard":null,"tryCatchPattern":"try { const data = await getTableData(name); } catch (e) { if (e.status === 404) { /* table does not exist */ } else throw e; }","preventionTips":["Always resolve table names from GET /management/tables, never hardcode from memory.","Mind database case sensitivity when passing table names.","Handle HTTP 404 for table endpoints explicitly."],"tags":["rest-api","not-found","management-api","table"],"backgroundTag":"resource-not-found","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}