14
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

【Prisma】Supabaseの接続でSupavisor対応してみた。

Last updated at Posted at 2024-01-21

はじめに

Supabaseから何やらデータベース接続についてメールが来ていました。
とりあえず英語はあまり得意ではないので、chatGPTくんに翻訳してまうと、
どうやら、IPv4およびpgBouncerを介した直接のデータベースアクセスを廃止して、新しい接続方式になるらしい。
とにかくタイムリミットが2024年1月15日(26日まで伸びましたが)だったので、X(旧twtter)でタイラー(@dshukertjrjp)さんに質問しながら急いで対応した備忘録を残します。

Supavisorの詳しい説明などは調べきれていないので、ここでは省きます。

この記事の対象

VercelでホスティングしているNext.jsからPrismaを使ってSupabaseに接続している方。

対応が必要な人

  • PrismaなどのSupabaseのPostgresに直接繋いで使うサービスを使っている方。
  • supabase-jsなどのクライアントライブラリーを使っている方は何もしなくて良いとのこと。

結局何をやればいいの?

「DATABASE_URL」を「Supabase」の「Database Settings」で二つ存在している「Connection String」で「Connection Pooling Connect to your database via connection pooling」の枠内にある方を使えばいいらしい・・・が、
公式のPrisma設定ドキュメントを見たら上記以外にもやることがありました。

書き換える箇所

  • ローカル開発環境は「.env」、Vercelは「Project Settings」の「Environment Variables」
  • schema.prismaファイル

まず、「DATABASE_URL」を、「Supabase」の「Database Settings」の「Connect to your database via connection pooling」の中にある「Connection String」に書き換えます。

末尾に「?pgbouncer=true&connection_limit=1」を付け加えるのを忘れないでください。

次に、新たに「DIRECT_URL」を、先ほどの「Connection String」のポート番号を「6543」から「5432」に書き換えたもので追加してください。

こちらは末尾に「?pgbouncer=true&connection_limit=1」を付け加えないでください。

スクリーンショット 2024-01-21 13.22.10.png

.env
DATABASE_URL=postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:6543/[db-name]?pgbouncer=true&connection_limit=1
DIRECT_URL=postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:5432/[db-name]

最後に「schema.prisma」の「datasource db」の項目を以下のように書き換えます。

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

上記をデプロイすれば、これで対応は完了です。

AWSのIPv4アドレス無料提供終了について

こちらもタイラーさんのツイートに質問させていただきました。
結論としては今回のSupavisorの対応を行なっておけば、VercelからIPv4にアクセスする場合でも1ヶ月あたり$4の支払いは発生しないとのことです。

最後に

メンションもついていない何をすればいいかわからないと言うツイートを拾っていただき、丁寧にやり取りをしていただいたタイラーさんありがとうございました。

参考

14
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?