From 43e581e7ba94b6bc996a0ebaec7f5404cba22b77 Mon Sep 17 00:00:00 2001 From: "DESKTOP-738DBED\\tomsl" Date: Wed, 25 Feb 2026 19:19:37 +0100 Subject: [PATCH 1/3] Fix Prisma migrations hanging on Vercel by using direct DB connection Supabase's pgBouncer (port 6543) doesn't support advisory locks required by prisma migrate deploy. Add directUrl to use the direct connection (port 5432) for migrations while the app continues using the pooler for queries. Also restore vercel-build script so migrations run automatically on deploy. Co-Authored-By: Claude Sonnet 4.6 --- package.json | 1 + prisma/schema.prisma | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 173eee7..f6c9824 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "scripts": { "dev": "next dev", "build": "npx prisma generate && next build", + "vercel-build": "npx prisma migrate deploy && npx prisma generate && next build", "db:migrate:deploy": "npx prisma migrate deploy", "start": "next start", "lint": "eslint", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index b45bf75..2230c69 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -4,7 +4,9 @@ generator client { } datasource db { - provider = "postgresql" + provider = "postgresql" + url = env("DATABASE_URL") + directUrl = env("DIRECT_URL") } // ─── Auth.js Models ────────────────────────────────────────────────────────── From 2ed12930a81e3588e3f60b031d09aec8dbf3328e Mon Sep 17 00:00:00 2001 From: "DESKTOP-738DBED\\tomsl" Date: Wed, 25 Feb 2026 19:36:45 +0100 Subject: [PATCH 2/3] Use DIRECT_URL in prisma.config.ts for migrations Prisma 7 removed url/directUrl from schema.prisma datasource blocks. Migration URLs are now configured in prisma.config.ts instead. Using DIRECT_URL (port 5432) here bypasses pgBouncer so advisory locks work. Co-Authored-By: Claude Sonnet 4.6 --- prisma.config.ts | 2 +- prisma/schema.prisma | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/prisma.config.ts b/prisma.config.ts index 831a20f..ba75023 100644 --- a/prisma.config.ts +++ b/prisma.config.ts @@ -9,6 +9,6 @@ export default defineConfig({ path: "prisma/migrations", }, datasource: { - url: process.env["DATABASE_URL"], + url: process.env["DIRECT_URL"], }, }); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 2230c69..b45bf75 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -4,9 +4,7 @@ generator client { } datasource db { - provider = "postgresql" - url = env("DATABASE_URL") - directUrl = env("DIRECT_URL") + provider = "postgresql" } // ─── Auth.js Models ────────────────────────────────────────────────────────── From eeb6d2bb454f7175958d389328d5ca328e1398d5 Mon Sep 17 00:00:00 2001 From: "DESKTOP-738DBED\\tomsl" Date: Wed, 25 Feb 2026 19:53:29 +0100 Subject: [PATCH 3/3] Move prisma migrate deploy into build script vercel-build was not being picked up by Vercel's Next.js preset. Moving migrate deploy into the standard build script ensures it runs on every deployment. It is idempotent so prod is unaffected. Co-Authored-By: Claude Sonnet 4.6 --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index f6c9824..f7da9ce 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "npx prisma generate && next build", - "vercel-build": "npx prisma migrate deploy && npx prisma generate && next build", + "build": "npx prisma migrate deploy && npx prisma generate && next build", "db:migrate:deploy": "npx prisma migrate deploy", "start": "next start", "lint": "eslint",