{"record":{"id":"c61700eeeccde88f","repo":"apache/seatunnel","slug":"table-not-exist","errorCode":null,"errorMessage":"Table not exist","messagePattern":"Table not exist","errorType":"exception","errorClass":"TableNotExistException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/catalog/IcebergCatalog.java","lineNumber":172,"sourceCode":"        return tables;\n    }\n\n    @Override\n    public boolean tableExists(TablePath tablePath) throws CatalogException {\n        return catalog.tableExists(toIcebergTableIdentifier(tablePath));\n    }\n\n    @Override\n    public CatalogTable getTable(TablePath tablePath)\n            throws CatalogException, TableNotExistException {\n        TableIdentifier icebergTableIdentifier = toIcebergTableIdentifier(tablePath);\n        try {\n            CatalogTable catalogTable =\n                    toCatalogTable(catalog.loadTable(icebergTableIdentifier), tablePath);\n            log.info(\"Fetched table details for: {}\", tablePath);\n            return catalogTable;\n        } catch (NoSuchTableException e) {\n            throw new TableNotExistException(\"Table not exist\", tablePath, e);\n        }\n    }\n\n    @Override\n    public void createTable(TablePath tablePath, CatalogTable table, boolean ignoreIfExists)\n            throws TableAlreadyExistException, DatabaseNotExistException, CatalogException {\n        log.info(\"Creating table at path: {}\", tablePath);\n        SchemaUtils.autoCreateTable(catalog, tablePath, table, readonlyConfig);\n    }\n\n    @Override\n    public void dropTable(TablePath tablePath, boolean ignoreIfNotExists)\n            throws TableNotExistException, CatalogException {\n        if (ignoreIfNotExists) {\n            if (!tableExists(tablePath)) {\n                log.info(\n                        \"Attempted to drop table at path: {}. The table does not exist, but proceeding as 'ignoreIfNotExists' is set to true.\",\n                        tablePath);","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/catalog/IcebergCatalog.java#L154-L190","documentation":"IcebergCatalog.getTable loads the Iceberg table and converts it to a SeaTunnel CatalogTable; when the underlying catalog throws NoSuchTableException, it is translated into SeaTunnel's TableNotExistException with message 'Table not exist', preserving the tablePath and cause.","triggerScenarios":"getTable(tablePath) is called for a fully qualified path whose table does not exist in the Iceberg catalog (wrong table name, wrong namespace, table dropped, or catalog pointing to a different warehouse/location).","commonSituations":"Typo in table name/namespace in the job config; reading a table that was dropped or renamed; environment mismatch (dev warehouse path vs prod); namespace case mismatch on catalogs that treat identifiers case-sensitively.","solutions":["Verify the tablePath (namespace + table) matches an existing table: list via the Iceberg catalog or engine client","Check the catalog warehouse/URI config points at the environment where the table actually lives","Create the table first if the job assumed it pre-exists (createTable or engine DDL)","Watch identifier case sensitivity — match the exact case used at creation"],"exampleFix":"// before: table = \"Evets\" (typo) in namespace \"db\"\nread { table_path = \"db.Evets\" }\n// after\nread { table_path = \"db.events\" }","handlingStrategy":"try-catch","validationCode":"// Pre-check existence before getTable\nif (!seaTunnelCatalog.tableExists(TablePath.of(\"db\", \"events\"))) {\n  throw new IllegalStateException(\"Table db.events does not exist in the configured catalog\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  CatalogTable t = seaTunnelCatalog.getTable(TablePath.of(\"db\", \"events\"));\n} catch (TableNotExistException e) {\n  // verify tablePath / create table / correct warehouse config, then retry\n}","preventionTips":["Echo the exact tablePath from the catalog (listTables) before hardcoding it in configs","Confirm warehouse/URI config targets the right environment","Create tables via DDL before read jobs that assume existence","Match identifier case exactly"],"tags":["iceberg","catalog","table-not-found"],"backgroundTag":"resource-not-found","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}