{"record":{"id":"ac0f98e07148992f","repo":"apache/seatunnel","slug":"driver-not-found","errorCode":"DRIVER_NOT_FOUND","errorMessage":"Cannot find Databend JDBC driver","messagePattern":"Cannot find Databend JDBC driver","errorType":"error_code","errorClass":"DatabendConnectorException","httpStatus":null,"severity":"critical","filePath":"seatunnel-connectors-v2/connector-databend/src/main/java/org/apache/seatunnel/connectors/seatunnel/databend/catalog/DatabendCatalog.java","lineNumber":67,"sourceCode":"import java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@Slf4j\npublic class DatabendCatalog implements Catalog {\n    private static final String DATABEND_DRIVER_NAME = \"com.databend.jdbc.DatabendDriver\";\n    private final String catalogName;\n    protected String defaultDatabase;\n    private boolean isOpened;\n    private ReadonlyConfig readonlyConfig;\n\n    static {\n        try {\n            Class.forName(DATABEND_DRIVER_NAME);\n        } catch (ClassNotFoundException e) {\n            throw new DatabendConnectorException(\n                    DatabendConnectorErrorCode.DRIVER_NOT_FOUND,\n                    \"Cannot find Databend JDBC driver\",\n                    e);\n        }\n    }\n\n    public DatabendCatalog(ReadonlyConfig readonlyConfig, String catalogName) {\n        this.catalogName = catalogName;\n        this.readonlyConfig = readonlyConfig;\n    }\n\n    @Override\n    public void createDatabase(TablePath tablePath, boolean ignoreIfExists)\n            throws DatabaseAlreadyExistException, CatalogException {\n        String databaseName = tablePath.getDatabaseName();\n        createDatabase(databaseName, ignoreIfExists);\n    }\n","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-databend/src/main/java/org/apache/seatunnel/connectors/seatunnel/databend/catalog/DatabendCatalog.java#L49-L85","documentation":"DatabendCatalog's static initializer loads the Databend JDBC driver class (com.databend.DatabendDriver) via Class.forName. If the driver class is not on the classpath, the catalog cannot be constructed and throws DRIVER_NOT_FOUND. The Databend JDBC driver jar must be present in SeaTunnel's plugin/connector classpath.","triggerScenarios":"Creating/opening a DatabendCatalog when the Databend JDBC driver jar is absent from the classpath — e.g. driver not installed via install-plugin.sh, jar placed in the wrong directory, or classloader isolation preventing the connector from seeing the jar.","commonSituations":"Fresh SeaTunnel install without running install-plugin.sh, driver jar placed in $SEATUNNEL_HOME/lib instead of the connector plugin dir, custom build excluding the driver dependency, or version mismatch so the expected driver class name does not exist in the jar.","solutions":["Download the Databend JDBC driver jar and place it in the SeaTunnel plugin directory for connector-databend (or run sh bin/install-plugin.sh to fetch connectors and their drivers).","Verify the jar contains the expected driver class: jar tf databend-jdbc-*.jar | grep -i databenddriver.","If using a shaded/custom build, add the databend-jdbc dependency (provided scope is fine at runtime with plugin classloader) and rebuild.","Confirm the driver version matches what the connector expects and restart the SeaTunnel node so the classpath is re-scanned."],"exampleFix":"// before: connector config points at Databend but driver jar missing\ncatalog {\n  Databend {\n    url = \"jdbc:databend://databend-host:443/default\"\n  }\n}\n// after: install driver first\n// cp databend-jdbc-x.y.z.jar $SEATUNNEL_HOME/connectors/connector-databend/\ncatalog {\n  Databend {\n    url = \"jdbc:databend://databend-host:443/default\"\n    username = \"u\"\n    password = \"p\"\n  }\n}","handlingStrategy":"validation","validationCode":"# before starting SeaTunnel\nls $SEATUNNEL_HOME/connectors/ | grep databend\njar tf $SEATUNNEL_HOME/connectors/connector-databend/databend-jdbc-*.jar | grep -i \"com/databend/DatabendDriver\"","typeGuard":null,"tryCatchPattern":"try {\n  Class.forName(\"com.databend.DatabendDriver\");\n} catch (ClassNotFoundException e) {\n  throw new IllegalStateException(\"Databend JDBC driver not on classpath — install databend-jdbc jar\", e);\n}","preventionTips":["Run sh bin/install-plugin.sh after installation to fetch connectors and drivers","Place the driver jar in the connector plugin directory, not lib/","Pin a driver version compatible with the connector's expected class name","Restart nodes after adding jars so classloaders pick them up"],"tags":["databend","jdbc","driver","classpath","startup"],"backgroundTag":"missing-dependency","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"}