🕌

supabaseのschemaをPrismaからpullできないときの対応

2024/08/19に公開

npx prisma db pullしても以下のような感じでずっとpullが終わらないとき、ポート番号を見直すとことでpullできるようになりました。

$ npx prisma db pull
Prisma schema loaded from prisma/schema.prisma
Environment variables loaded from .env
Datasource "db": PostgreSQL database "postgres", schema "public" at "aws-0-ap-northeast-1.pooler.supabase.com:6543"

⠏ Introspecting based on datasource defined in prisma/schema.prisma

解決方法

(1).envにDIRECT_URLを設定

.envにDIRECT_URLを設定しましょう。ポートはデフォルトなら5432です。マイグレート関連はこちらの通路を使うらしい

DATABASE_URL=postgresql://{あなたの設定}:6543/postgre
DIRECT_URL=postgresql://{あなたの設定}:5432/postgres

コンソールから確認するのがよいです。
Setting > Database > Mode Transaction or Mode Sessionを切り替えることで具体的な接続先をそれぞれ確認できます。

(2)prisma/schema.prismaにdirectUrlを設定

prisma/schema.prismaにDIRECT_URLを追加します。

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider  = "postgresql"
  url       = env("DATABASE_URL")
  directUrl = env("DIRECT_URL")
}

これで再び、npx prisma db pullを実行したらうまくいきました。
よかった。

Discussion