cube-js/cube · error
Dialect for '${queryOptions.externalDbType}' is not found
Error message
Dialect for '${queryOptions.externalDbType}' is not found What it means
When compiling an external (pre-aggregation rollup) query, Cube looks up the driver class for externalDbType in the built-in ADAPTERS registry. If externalDialectClass is not provided and externalDbType is not a known key, the factory throws this error because it has no query class to instantiate for the external store.
Source
Thrown at packages/cubejs-schema-compiler/src/adapter/QueryBuilder.ts:53
hive: HiveQuery,
oracle: OracleQuery,
sqlite: SqliteQuery,
materialize: PostgresQuery,
cubestore: CubeStoreQuery,
};
export const queryClass = (dbType: string, dialectClass) => dialectClass || ADAPTERS[dbType];
export const createQuery = (compilers, dbType: string, queryOptions: any) => {
if (!queryOptions.dialectClass && !ADAPTERS[dbType]) {
return null;
}
let externalQueryClass = queryOptions.externalDialectClass;
if (!externalQueryClass && queryOptions.externalDbType) {
if (!ADAPTERS[queryOptions.externalDbType]) {
throw new Error(`Dialect for '${queryOptions.externalDbType}' is not found`);
}
externalQueryClass = ADAPTERS[queryOptions.externalDbType];
}
return new (queryClass(dbType, queryOptions.dialectClass))(compilers, {
...queryOptions,
externalQueryClass,
});
};
View on GitHub (pinned to 7d981676b3)
Solutions
- Correct the externalDbType string to a registered adapter name (check ADAPTERS keys in adapter/QueryBuilder.ts)
- Provide queryOptions.externalDialectClass with your own query class for the external db
- Verify the driver package for the external database is installed and the db type is supported in your Cube version
Example fix
// before
createQuery(compilers, { ...options, externalDbType: 'postgres ' });
// after
createQuery(compilers, { ...options, externalDbType: 'postgres' }); // or supply externalDialectClass Defensive patterns
Strategy: validation
Validate before calling
import { ADAPTERS } from './adapter/QueryBuilder';
if (opts.externalDbType && !opts.externalDialectClass && !ADAPTERS[opts.externalDbType]) throw new Error(`Unsupported externalDbType: ${opts.externalDbType}`); Try / catch
try { return createQuery(compilers, options); } catch (e) { if (/Dialect for '.*' is not found/.test(e.message)) { console.error('Known dbTypes:', Object.keys(ADAPTERS)); } throw e; } Prevention
- Copy externalDbType values from documented adapter names, never by hand-typing
- Supply externalDialectClass for custom external stores
- Add startup-time config validation of db types
When it happens
Trigger: Passing queryOptions.externalDbType whose value has no entry in ADAPTERS (typo like 'postgres ' or a custom/unregistered db type) while not supplying externalDialectClass via compilerApi/prepareCompiler options.
Common situations: Configuring a custom pre-aggregation store (e.g. DuckDB/ClickHouse) with a misspelled externalDbType; upgrading Cube where a dialect was renamed or removed; forgetting externalDialectClass when using a non-registered external database.
Related errors
- Unload is not configured. Please define CUBEJS_AWS_S3_OUTPUT
- externalDriverFactory is not provided. Please use CUBEJS_DEV
- Undefined dbType or dialectClass for '${cube}'
- Unknown dbType: ${dbType}
- Can't find dialect for '${dataSource}' data source: ${_dbTyp
AI-assisted analysis of cube-js/cube@7d981676b3 (2026-09-02).
Data as JSON: /api/errors/1096cc85cc8faebc.
Report an issue: GitHub.