Prisma
Tested with: Prisma 6.16 · PostgreSQL 17 · MySQL 8.4
datasource db { provider = "postgresql" url = env("DATABASE_URL") // pooled endpoint for the app directUrl = env("DIRECT_URL") // direct endpoint for migrations}DATABASE_URL="postgresql://app:<password>@pg-7f3k-pool.us-east.databasezy.com:5432/app?sslmode=verify-full&pgbouncer=true&connection_limit=3"DIRECT_URL="postgresql://app:<password>@pg-7f3k.us-east.databasezy.com:5432/app?sslmode=verify-full"pgbouncer=truemakes Prisma skip prepared-statement caching, which the transaction-mode pooler needs.sslmode=verify-fullworks with the OS trust store; add&sslcert=only if you use mTLS. To pin the CA file instead, append&sslrootcert=./databasezy-ca.pem.connection_limitbounds the per-process pool; keep it small on serverless.
datasource db { provider = "mysql" url = env("DATABASE_URL")}DATABASE_URL="mysql://app:<password>@mysql-7f3k.us-east.databasezy.com:3306/app?sslaccept=strict&sslcert=./databasezy-ca.pem&connection_limit=5"sslaccept=strict verifies the certificate; sslcert here is Prisma’s name for the CA file.
Migrations
Section titled “Migrations”npx prisma migrate deploy # uses DIRECT_URLnpx prisma generateOn Kubernetes run this as a Job; on Vercel, Netlify, Render and Railway use the platform’s pre-deploy or build step (platform guides).