# Prisma "prepared statement does not exist" with pooling

## Symptom
`prepared statement "s1" does not exist` (or similar) from Prisma, intermittent, usually under concurrency; single-threaded tests pass.

## Cause
The Prisma query engine uses server-side prepared statements. On Neon's pooled endpoint, PgBouncer runs in transaction mode: the backend holding your prepared statement gets handed to another client after the transaction, so the next execution cannot find it. (This is distinct from the Drizzle/RLS proxy issue also in the corpus; same message, different mechanism.)

## Confirm
1. The failing datasource URL has `-pooler` in the hostname.
2. Failures correlate with concurrency, not with specific queries.

## Fix
- Recommended: use `@prisma/adapter-neon` with the pooled string; the adapter is built for this path.
- Or point that Prisma client at the direct connection string (cost: real Postgres connections per instance; fine for low-concurrency services).
- Or disable prepared statements in the Prisma datasource if your setup exposes it.

## Verify
Run the previously failing concurrent workload; the error disappears and stays gone across deploys.