{"record":{"id":"e71eda19a6176847","repo":"apache/seatunnel","slug":"database-not-existed-e71eda","errorCode":"DATABASE_NOT_EXISTED","errorMessage":"Database %s does not exist in Catalog %s.","messagePattern":"Database (.+?) does not exist in Catalog (.+?)\\.","errorType":"error_code","errorClass":"DatabaseNotExistException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/saphana/SapHanaCatalog.java","lineNumber":154,"sourceCode":"        return String.format(\n                \"SELECT TABLE_NAME FROM TABLES WHERE SCHEMA_NAME = '%s'\", databaseName);\n    }\n\n    @Override\n    public String getListViewSql(String databaseName) {\n        return String.format(\n                \"SELECT VIEW_NAME FROM SYS.VIEWS WHERE SCHEMA_NAME = '%s'\", databaseName);\n    }\n\n    public String getListSynonymSql(String databaseName) {\n        return String.format(\n                \"SELECT SYNONYM_NAME FROM SYNONYMS WHERE SCHEMA_NAME = '%s'\", databaseName);\n    }\n\n    public List<String> listSynonym(String databaseName)\n            throws CatalogException, DatabaseNotExistException {\n        if (!databaseExists(databaseName)) {\n            throw new DatabaseNotExistException(this.catalogName, databaseName);\n        }\n        String dbUrl = getUrlFromDatabaseName(databaseName);\n        try {\n            return queryString(dbUrl, getListSynonymSql(databaseName), this::getTableName);\n        } catch (Exception e) {\n            throw new CatalogException(\n                    String.format(\"Failed listing database in catalog %s\", catalogName), e);\n        }\n    }\n\n    @Override\n    protected String getTableName(ResultSet rs) throws SQLException {\n        return rs.getString(1);\n    }\n\n    @Override\n    protected String getSelectColumnsSql(TablePath tablePath) {\n        return String.format(","sourceCodeStart":136,"sourceCodeEnd":172,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/saphana/SapHanaCatalog.java#L136-L172","documentation":"SapHanaCatalog.listSynonym throws DatabaseNotExistException (DATABASE_NOT_EXISTED) when databaseExists(databaseName) is false before querying SYNONYMS. It signals the caller asked for synonyms in a schema that does not exist (or is not visible to the connection user).","triggerScenarios":"getTable (or direct calls) invoking listSynonym with a databaseName that has no matching schema in SAP HANA, including case-sensitivity mismatches (HANA identifiers are upper-case by default).","commonSituations":"Lower-cased schema names not quoted, connecting to wrong HANA tenant/database, user lacking visibility of the target schema, typo in database/schema name.","solutions":["Verify the schema exists via SELECT SCHEMA_NAME FROM SCHEMAS or a SQL client","Match HANA's default upper-case identifier convention (quote or uppercase the name)","Confirm the connection targets the correct tenant database","Grant the user metadata visibility on the target schema"],"exampleFix":"// before\ncatalog.getTable(TablePath.of(\"myschema\", \"MYTABLE\")); // DatabaseNotExistException\n// after\ncatalog.getTable(TablePath.of(\"MYSCHEMA\", \"MYTABLE\")); // HANA schemas are upper-case","handlingStrategy":"validation","validationCode":"// pre-check schema existence in HANA\n// SELECT COUNT(*) FROM SCHEMAS WHERE SCHEMA_NAME = ?","typeGuard":"boolean schemaExists(java.sql.Connection c, String schema) throws SQLException {\n    try (var ps = c.prepareStatement(\"SELECT COUNT(*) FROM SCHEMAS WHERE SCHEMA_NAME = ?\")) {\n        ps.setString(1, schema.toUpperCase());\n        try (var rs = ps.executeQuery()) { return rs.next() && rs.getInt(1) > 0; }\n    }\n}","tryCatchPattern":"try { catalog.getTable(path); } catch (DatabaseNotExistException e) { /* fix schema name/tenant and retry */ }","preventionTips":["Use HANA's default upper-case identifiers unless explicitly quoted","Confirm connection targets the intended tenant database","Verify user has metadata visibility on the schema before calls"],"tags":["jdbc","saphana","schema-not-found","metadata"],"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-14T11:17:12.474Z"}