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
- Raise options.version to the latest (2) or omit it so the default is used.
- If you intentionally need v1, switch the affected column to a generator kind that has a v1 implementation.
- 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
- Omit options.version to use the latest stable generator implementations.
- When pinning version 1, verify all column types have v1 generators available.
- After upgrading drizzle-seed, review generatorsMap for version coverage.
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.