drizzle-team/drizzle-orm · error · Error

Can't select ${entityKind} generator for ${this.version} ver

Error message

Can't select ${entityKind} generator for ${this.version} version.

What it means

selectVersionOfGenerator filters the registered generator constructors for a given entityKind by version <= this.version and picks the highest. If no constructor exists at or below the requested version (e.g. version is 1 but the generator was only introduced in version 2, or the entityKind has no registered constructors at all), the filtered list is empty and it throws.

Source

Thrown at drizzle-seed/src/services/SeedService.ts:325

		if (entityKind === 'GenerateArray') {
			const oldBaseColumnGen = (generator as GenerateArray).params.baseColumnGen;

			const newBaseColumnGen = this.selectVersionOfGenerator(oldBaseColumnGen);
			// newGenerator.baseColumnDataType = oldGenerator.baseColumnDataType;

			(generator as GenerateArray).params.baseColumnGen = newBaseColumnGen;
		}

		const possibleGeneratorConstructors = generatorsMap[entityKind as keyof typeof generatorsMap];

		const possibleGeneratorConstructorsFiltered = possibleGeneratorConstructors?.filter((possGenCon) =>
			possGenCon.version <= this.version! // sorting in ascending order by version
		).sort((a, b) => a.version - b.version);
		const generatorConstructor = possibleGeneratorConstructorsFiltered?.at(-1) as
			| (new(params: any) => AbstractGenerator<any>)
			| undefined;
		if (generatorConstructor === undefined) {
			throw new Error(`Can't select ${entityKind} generator for ${this.version} version.`);
		}

		const newGenerator = new generatorConstructor(generator.params);
		newGenerator.baseColumnDataType = generator.baseColumnDataType;
		newGenerator.isUnique = generator.isUnique;
		// TODO: for now only GenerateValuesFromArray support notNull property
		newGenerator.notNull = generator.notNull;
		newGenerator.dataType = generator.dataType;
		newGenerator.stringLength = generator.stringLength;

		return newGenerator;
	};

	cyclicTablesCompare = (
		table1: Table,
		table2: Table,
		relation: Relation & { isCyclic: boolean },
		reverseRelation: Relation & { isCyclic: boolean } | undefined,

View on GitHub (pinned to b7862528fd)

Solutions

  1. Raise options.version to the latest (2) or omit it so the default is used.
  2. If you intentionally need v1, switch the affected column to a generator kind that has a v1 implementation.
  3. Register the missing generator constructor in generatorsMap under the entityKind and the target version (advanced / library-level fix).

Example fix

// before
await seed(db, { schema }, { version: 1 });
// after
await seed(db, { schema }, { version: 2 }); // or omit version
Defensive patterns

Strategy: validation

Validate before calling

function isValidSeedVersion(v: unknown): boolean {
  return v === undefined || (typeof v === 'number' && !Number.isNaN(v) && v >= 1 && v <= 2);
}
// If using version 1, be aware some generators only exist in v2.
// Omit version to get the safest default (latest).

Prevention

When it happens

Trigger: Setting options.version = 1 when a column resolves to a generator kind whose only implementation is version 2; or an internal/entityKind value that has no entry in generatorsMap.

Common situations: Downgrading the version option to force v1 behavior but a column type only has a v2 generator; using a custom or experimental generator whose entityKind isn't in the generatorsMap registry.

Related errors


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