drizzle-team/drizzle-orm · error · Error

Cannot execute a query on a query builder. Please use a data

Error message

Cannot execute a query on a query builder. Please use a database instance instead.

What it means

Error "Cannot execute a query on a query builder. Please use a database instance instead." thrown in drizzle-team/drizzle-orm.

Source

Thrown at drizzle-orm/src/gel-core/query-builders/select.ts:1066

	TSelectedFields = BuildSubquerySelection<TSelection, TNullabilityMap>,
> extends GelSelectQueryBuilderBase<
	GelSelectHKT,
	TTableName,
	TSelection,
	TSelectMode,
	TNullabilityMap,
	TDynamic,
	TExcludedMethods,
	TResult,
	TSelectedFields
> implements RunnableQuery<TResult, 'gel'>, SQLWrapper {
	static override readonly [entityKind]: string = 'GelSelect';

	/** @internal */
	_prepare(name?: string): GelSelectPrepare<this> {
		const { session, config, dialect, joinsNotNullableMap, cacheConfig, usedTables } = this;
		if (!session) {
			throw new Error('Cannot execute a query on a query builder. Please use a database instance instead.');
		}
		return tracer.startActiveSpan('drizzle.prepareQuery', () => {
			const fieldsList = orderSelectedFields<GelColumn>(config.fields);
			const query = session.prepareQuery<
				PreparedQueryConfig & { execute: TResult }
			>(dialect.sqlToQuery(this.getSQL()), fieldsList, name, true, undefined, {
				type: 'select',
				tables: [...usedTables],
			}, cacheConfig);
			query.joinsNotNullableMap = joinsNotNullableMap;

			return query;
		});
	}

	$withCache(config?: { config?: CacheConfig; tag?: string; autoInvalidate?: boolean } | false) {
		this.cacheConfig = config === undefined
			? { config: {}, enable: true, autoInvalidate: true }

View on GitHub (pinned to b7862528fd)

Solutions

  1. Run the query through the database instance (db.execute(...) or await db.select()...) instead of calling execute/run on the query builder itself.

When it happens

Trigger: Awaiting/executing a Gel query builder (or passing it where a db is required) instead of executing through a database instance.

Common situations: Calling .execute() on a nested subquery builder; passing a select builder into a function expecting db.


AI-assisted analysis of drizzle-team/drizzle-orm@b7862528fd (2026-08-03). Data as JSON: /data/errors/d6052532f9967078.json. Report an issue: GitHub.