Prisma P2025 "An operation failed because it depends on one or more records that were required but was not found"
Problem
An update endpoint that 500s whenever the record is missing — which, for a public API, is not an edge case at all:
PrismaClientKnownRequestError:
Invalid `prisma.post.update()` invocation:
An operation failed because it depends on one or more records that were
required but was not found: Record to update not found.
code: P2025The confusing part: the same route returns 404 correctly for the findUnique it runs earlier in the handler. The 500 comes from a second query that references the record indirectly.
Root cause
P2025 fires on write operations — update, delete, updateMany (with the right flags), and crucially on relation connects. The three shapes we hit, in order of frequency:
1. update/delete on a row that was already deleted (a second concurrent request, or a stale frontend). 2. connect on a relation whose target is gone: prisma.comment.create({ data: { post: { connect: { id } } } }) throws P2025 when the post was deleted between page load and submit — this is the one hiding behind a passing 404 check on a different table. 3. Nested writes where the parent's where matches nothing.
updateMany/deleteMany do not throw P2025 — they return count: 0 — so code that migrated a delete to deleteMany to "fix" this inherits a silent no-op instead, which is a different production incident with the same origin.
import { Prisma } from '@prisma/client';
export async function updatePost(id, userId, data) {
… 14 more lines in the fix🔒 the fix — including 3 code blocks — is members-only. $1/mo unlocks everything.