Build1 distinct publisher3 min readUpdated
A dev.to walkthrough flags two upgrade traps: migrate dev no longer runs your seed script, and seeding through the pooled endpoint breaks long transactions and prepared statements.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A walkthrough published on dev.to reports that in Prisma ORM v7, `prisma db seed` still works but is no longer triggered automatically by `prisma migrate dev`, so it has to be invoked explicitly or called from a CI step [1]. That is the kind of change that costs an afternoon rather than an incident, because nothing fails: migrations apply, the schema is right, and the tables are empty [1][8].
The guide's own onboarding scenario is the shape of the bug. A teammate clones the repo, runs `npx prisma migrate dev`, and ends up with thirty empty tables; the app boots and every list view is blank [9]. The same silence propagates into automation: without an explicit seed step, end to end tests hit empty queries and fail for reasons that have nothing to do with the change under test [10]. If your pipeline depended on `migrate dev` to populate fixtures, upgrading to v7 gives you green migrations and empty fixtures, and the test failures will point at your application code [17].
The second trap is louder but easier to misread. Prisma Postgres ships two TCP connection strings, a direct one at `db.prisma.io:5432` and a pooled one at `pooled.db.prisma.io:5432` [2][13]. According to the guide, the pooled endpoint runs through a transaction mode pooler that breaks long transactions and prepared statements, which is the same class of failure Neon and Supabase users hit on their poolers [3][4]. That one does throw, but it throws mid seed, which means a partially populated database that looks seeded until someone queries a relation that never got written. The recommendation is to point `directUrl` in `schema.prisma` at the direct URL and to configure `seed: "tsx prisma/seed.ts"` in `prisma.config.ts` [5]. For edge runtimes that cannot open a TCP socket, such as Cloudflare Workers and Vercel Edge, the guide points at `@prisma/adapter-ppg`, which exports `PrismaPostgresAdapter` and accepts the same direct connection string; for Node side seeds it says the plain TCP URL with the standard `pg` driver is simpler [6][7].
Two caveats about the source. It asserts the v7 behaviour change without citing Prisma's release notes or changelog, so confirm it against your own upgrade rather than taking a blog post's word for the state of your migration workflow [16]. And it is a vendor piece: the same article argues that hand written seed files break whenever the schema changes and recommends Seedfast, which reads the live schema on each run and regenerates connected data, for schemas past roughly fifteen related tables [11][12]. Treat the connection string advice and the v7 note as the usable content and the lifecycle argument as a pitch, particularly the framing that Prisma's docs cover the mechanics of `prisma db seed` but not the staleness problem [15].
What to watch: whether your CI configuration names the seed step explicitly, and whether whatever the seed connects to is the direct host. The regulated industry framing in the guide is real enough as a constraint, since a fresh Prisma Postgres project has no production data, no PII, and nothing to copy in [14], which means the seed script is the only source of realistic data and its silent absence is the failure you will not see logged.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Prisma Postgres ships with two TCP connection strings: direct (db.prisma.io:5432) and pooled (pooled.db.prisma.io:5432).
The pooled Prisma Postgres endpoint runs through a transaction-mode connection pooler that breaks long transactions and prepared statements; the guide says always seed against the direct URL.
The guide recommends configuring seed: "tsx prisma/seed.ts" in prisma.config.ts and pointing directUrl at the direct URL in schema.prisma.
For edge runtimes that cannot open a TCP socket, such as Cloudflare Workers and Vercel Edge, the @prisma/adapter-ppg package exports PrismaPostgresAdapter, which wraps Prisma's serverless driver and accepts the same direct TCP connection string.
For Node-side seeds the guide says the plain TCP URL with the standard pg driver is simpler.
A fresh Prisma Postgres database is empty: migrations create the schema and nothing fills it, and the project stays clean until something is put into it.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Single uncited how-to post
All assertions trace to one dev.to guide. The mechanically checkable parts — two connection string forms, transaction-mode pooler failure modes, the prisma.config.ts and directUrl wiring, the @prisma/adapter-ppg export — are internally consistent and specific, which lifts evidence slightly above the floor. Everything load-bearing beyond that is unsupported: the Prisma ORM v7 seed-trigger change carries no release-note citation, the Neon/Supabase comparison has no external reference, the claimed Prisma docs gap cannot be checked against any supplied documentation, and no error output, version pin, or reproduction is shown.
No adoption signal supplied
The material contains no release artifact, deployment, benchmark, usage disclosure, download count, pricing, or license datum. The guide describes what developers would encounter, not what any measured population is doing, and no adoption observation could be recorded without inventing facts.
Definitive framing on thin proof
Claims are stated with more certainty than the supporting material carries. A breaking behaviour change in a major ORM release is announced without citing the release notes; a numeric switching threshold of roughly 15 related tables is given without any basis; and a commercial tool is described as removing seed-file maintenance entirely, which is a strong absolute with no benchmark, user evidence, or failure-mode discussion behind it. The gap is not maximal because the connection-string and pooler-mechanics portions are concrete, self-consistent, and quickly falsifiable by a reader.
Guide sells the tool it recommends
The article is structured so that its diagnosis leads to its product. It defines a lifecycle gap it says Prisma's docs ignore, asserts hand-written seed files inevitably break, then routes readers past ~15 related tables to Seedfast, which appears in the TL;DR itself. It also cross-links its own companion seeding article. No relationship between author and tool is disclosed, and the promotional payload sits on exactly the claims that are least evidenced, which is the pattern that most warrants discounting.
Low confidence, one interested voice
Confidence is limited by source count of one, absence of primary-vendor confirmation for the headline change, no adoption measurement at all, and a clear promotional incentive on the least-evidenced claims. It is not lower because the operational advice is coherent, the configuration details are specific and independently testable by any reader with a Prisma Postgres project, and the described pooler behaviour matches well-known transaction-mode pooling constraints as stated within the source.
build
At 70,000 images, next/image is not your optimizer, it is your outage1 distinct publisher
build
A GAN beauty filter is a device budget allocation, not a feature toggle1 distinct publisher
build
Four Layers, One Status Code: Testing Tenant Scope on a Generated Prisma Route1 distinct publisher
build
"Too Many Clients Already" Is Arithmetic, Not Capacity1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 14, 2026