apache/seatunnel · critical · DatabendConnectorException

DRIVER_NOT_FOUND

DRIVER_NOT_FOUND

Error message

Cannot find Databend JDBC driver

What it means

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.

Source

Thrown at seatunnel-connectors-v2/connector-databend/src/main/java/org/apache/seatunnel/connectors/seatunnel/databend/catalog/DatabendCatalog.java:67

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Slf4j
public class DatabendCatalog implements Catalog {
    private static final String DATABEND_DRIVER_NAME = "com.databend.jdbc.DatabendDriver";
    private final String catalogName;
    protected String defaultDatabase;
    private boolean isOpened;
    private ReadonlyConfig readonlyConfig;

    static {
        try {
            Class.forName(DATABEND_DRIVER_NAME);
        } catch (ClassNotFoundException e) {
            throw new DatabendConnectorException(
                    DatabendConnectorErrorCode.DRIVER_NOT_FOUND,
                    "Cannot find Databend JDBC driver",
                    e);
        }
    }

    public DatabendCatalog(ReadonlyConfig readonlyConfig, String catalogName) {
        this.catalogName = catalogName;
        this.readonlyConfig = readonlyConfig;
    }

    @Override
    public void createDatabase(TablePath tablePath, boolean ignoreIfExists)
            throws DatabaseAlreadyExistException, CatalogException {
        String databaseName = tablePath.getDatabaseName();
        createDatabase(databaseName, ignoreIfExists);
    }

View on GitHub (pinned to cf67b549a7)

Solutions

  1. 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).
  2. Verify the jar contains the expected driver class: jar tf databend-jdbc-*.jar | grep -i databenddriver.
  3. If using a shaded/custom build, add the databend-jdbc dependency (provided scope is fine at runtime with plugin classloader) and rebuild.
  4. Confirm the driver version matches what the connector expects and restart the SeaTunnel node so the classpath is re-scanned.

Example fix

// before: connector config points at Databend but driver jar missing
catalog {
  Databend {
    url = "jdbc:databend://databend-host:443/default"
  }
}
// after: install driver first
// cp databend-jdbc-x.y.z.jar $SEATUNNEL_HOME/connectors/connector-databend/
catalog {
  Databend {
    url = "jdbc:databend://databend-host:443/default"
    username = "u"
    password = "p"
  }
}
Defensive patterns

Strategy: validation

Validate before calling

# before starting SeaTunnel
ls $SEATUNNEL_HOME/connectors/ | grep databend
jar tf $SEATUNNEL_HOME/connectors/connector-databend/databend-jdbc-*.jar | grep -i "com/databend/DatabendDriver"

Try / catch

try {
  Class.forName("com.databend.DatabendDriver");
} catch (ClassNotFoundException e) {
  throw new IllegalStateException("Databend JDBC driver not on classpath — install databend-jdbc jar", e);
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Understand the failure class

Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/ac0f98e07148992f. Report an issue: GitHub.