drizzle-team/drizzle-orm · error · Error
Version should be in range [1, ${latestVersion}].
Error message
Version should be in range [1, ${latestVersion}]. What it means
generatePossibleGenerators accepts an options.version that selects which generator implementation revision to use. The valid range is [1, latestVersion] where latestVersion is currently 2. Passing NaN, zero, a negative number, or a version above latestVersion causes an immediate throw.
Source
Thrown at drizzle-seed/src/services/SeedService.ts:46
// there is no max parameters number in mysql, so you can increase mysqlMaxParametersNumber if it's needed.
private mysqlMaxParametersNumber = 100000;
// SQLITE_MAX_VARIABLE_NUMBER, which by default equals to 999 for SQLite versions prior to 3.32.0 (2020-05-22) or 32766 for SQLite versions after 3.32.0.
private sqliteMaxParametersNumber = 32766;
private version?: number;
generatePossibleGenerators = (
connectionType: 'postgresql' | 'mysql' | 'sqlite',
tables: Table[],
relations: (Relation & { isCyclic: boolean })[],
refinements?: RefinementsType,
options?: { count?: number; seed?: number; version?: number },
) => {
let columnPossibleGenerator: Prettify<GeneratePossibleGeneratorsColumnType>;
let tablePossibleGenerators: Prettify<GeneratePossibleGeneratorsTableType>;
const customSeed = options?.seed === undefined ? 0 : options.seed;
this.version = options?.version === undefined ? latestVersion : options.version;
if (Number.isNaN(this.version) || this.version < 1 || this.version > latestVersion) {
throw new Error(`Version should be in range [1, ${latestVersion}].`);
}
// sorting table in order which they will be filled up (tables with foreign keys case)
const { tablesInOutRelations } = this.getInfoFromRelations(relations);
const orderedTablesNames = this.getOrderedTablesList(tablesInOutRelations);
tables = tables.sort((table1, table2) => {
const rel = relations.find((rel) => rel.table === table1.name && rel.refTable === table2.name);
if (rel?.isCyclic === true) {
const reverseRel = relations.find((rel) => rel.table === table2.name && rel.refTable === table1.name);
return this.cyclicTablesCompare(table1, table2, rel, reverseRel);
}
const table1Order = orderedTablesNames.indexOf(
table1.name,
),
table2Order = orderedTablesNames.indexOf(
table2.name,View on GitHub (pinned to b7862528fd)
Solutions
- Set options.version to 1 or 2 (or omit it entirely to default to latestVersion).
- If the version comes from an env var, validate/coerce it before passing: const v = Number(process.env.SEED_VERSION); options.version = Number.isNaN(v) ? undefined : v.
- Check the installed drizzle-seed version's apiVersion.ts for the current latestVersion before pinning.
Example fix
// before
await seed(db, { schema }, { version: 3 });
// after
await seed(db, { schema }, { version: 2 }); // or omit version entirely Defensive patterns
Strategy: validation
Validate before calling
import { latestVersion } from 'drizzle-seed/services/apiVersion'; // or hardcode 2
function isValidVersion(v: unknown): v is number {
return typeof v === 'number' && !Number.isNaN(v) && v >= 1 && v <= 2;
}
// Usage:
const version = isValidVersion(options.version) ? options.version : undefined; // undefined => defaults to latest Type guard
function isSeedVersion(v: unknown): v is number {
return typeof v === 'number' && Number.isInteger(v) && v >= 1 && v <= 2;
} Prevention
- Omit options.version unless you need a specific revision.
- Validate env-sourced version numbers with Number.isNaN before passing.
- After upgrading drizzle-seed, re-check latestVersion in apiVersion.ts.
When it happens
Trigger: Calling seed() with options.version set to 0, 3+, NaN, or a value from an unconfigured env variable (e.g. Number(process.env.SEED_VERSION) when the var is unset yields NaN).
Common situations: Upgrading drizzle-seed and accidentally passing an old/new version integer; reading version from an environment variable that is unset or mistyped; hard-coding a version that was removed in a newer release.
Related errors
- Can't find meta/_journal.json file
- No fields selected for table "${tableConfig.tsName}" ("${tab
- No fields selected for table "${tableConfig.tsName}" ("${tab
- You need to specify "mode": "planetscale" or "default" when
- Invalid arguments. Expected a connection string or a config
AI-assisted analysis of drizzle-team/drizzle-orm@b7862528fd (2026-08-03).
Data as JSON: /data/errors/c708b319da397a87.json.
Report an issue: GitHub.