SupabaseとPrismaでのIPv6 アドレスでの直接のデータベース接続方法
2024年1月26日よりSupabase
でIPv4 および pgBouncer を介した直接のデータベースへのアクセスが停止されたので、それに伴ってのPrisma
での接続方法を記しています。
Supabaseとは?
Supabaseは、PostgreSQLホスティングサービスであり、オープンソースのFirebaseの代替として提供されています。
これは、製品を構築するために必要なすべてのバックエンド機能を提供し、Prismaを使用して直接アクセスできるPostgreSQLに基づいています。
Supabaseのアーキテクチャと機能についての詳細はこちらをご覧ください。
他のデータベースプロバイダーとの共通点
Supabaseを使用する場合、Prismaを他のリレーショナルデータベースと同様に使用できます。以下は共通の操作です:
Prisma Schema Languageを使用してデータベースをモデル化
Prismaのpostgresqlデータベースコネクタを使用
既存のプロジェクトにIntrospectionを使用
db push
を使用してスキーマの変更をプッシュPrisma Clientを使用してデータベースと対話
特定の考慮事項
以前は以下のように.env
で設定していました。
DATABASE_URL="postgres://[user]:[password]@db.[your-supabase-project].supabase.co:5432/[db-name]"
Supabaseの接続プーリング機能を使用する場合は、?pgbouncer=true
をDATABASE_URL
環境変数に追加します:
DATABASE_URL="postgres://postgres.[your-supabase-project]:[password]@aws-0-eu-central-1.pooler.supabase.com:6543/postgres?pgbouncer=true"
Prisma CLIを使用して他のアクションを実行する場合は、DIRECT_URL
環境変数を追加して、CLIがSupavisorをバイパスできるようにします:
# Supervisor を使用した接続プーリングを介して Supabase に接続します。
DATABASE_URL="postgres://postgres.[your-supabase-project]:[password]@aws-0-eu-central-1.pooler.supabase.com:6543/postgres?pgbouncer=true"
# データベースへの直接接続。 マイグレーションに使用されます。
DIRECT_URL="postgres://postgres:[password]@db.[your-supabase-project].supabase.co:5432/postgres"
その後、schema.prisma
を新しい直接URLを使用するように更新できます:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}
directUrl
フィールドに関する詳細はこちらで確認できます。
DIRECT_URL に加えて、Supavisor を使用した接続プーリングを強くお勧めします。これにより、Prisma CLI の優れた開発者エクスペリエンスを得ることができ、展開戦略に関係なく接続をプールできます。これはすべてのアプリケーションに厳密に必要ではありませんが、サーバーレスのソリューションでは接続プーリングが不可欠です。
SupabaseとPrismaの統合を始める
Supabaseに提供されたデータベースをPrismaプロジェクトに接続する手順に興味がある場合は、こちらのガイドを参照してください。