😎

Prismaでsupabaseにmigrate devをしようとしたがうまくいかない

2024/06/03に公開

PrismaとSupabaseを使ってprisma migrate devを実行する際に問題が発生した場合、よくある原因として環境変数が不足していることが挙げられます。今回は、特にDIRECT_URLが設定されていないことが原因で発生する問題について解説し、正しい設定方法を紹介します。

問題の概要
Prismaを使ってSupabaseに接続し、データベースのマイグレーションを実行しようとすると、DIRECT_URLが指定されていない場合にエラーが発生することがあります。DIRECT_URLは、マイグレーションの際に直接データベースに接続するために必要なURLです。この環境変数が欠けていると、Prismaはデフォルトの接続方法を使用しようとしてエラーになります。

環境変数の設定
以下に、正しい環境変数の設定例を示します。Prismaのドキュメントに従いながら、必要な設定を行いましょう。

.envファイルの設定
まず、プロジェクトのルートディレクトリにある.envファイルを開き、以下のように設定します:

# Supabaseへの接続設定
DATABASE_URL="postgres://~~~postgres?pgbouncer=true"

# データベースへの直接接続。マイグレーションに使用されます。
DIRECT_URL="postgres://postgres"

環境変数の説明
DATABASE_URL:これはSupabaseへの接続に使用されるURLです。pgbouncer=trueというパラメータを付加することで、接続プールを利用します。
DIRECT_URL:このURLはマイグレーションの際に直接データベースに接続するために使用されます。DATABASE_URLとは異なり、接続プールを経由しません。

マイグレーションの実行
環境変数を正しく設定したら、以下のコマンドを実行してマイグレーションを開始します:

npx prisma migrate dev

これで、PrismaはDIRECT_URLを使用して直接データベースに接続し、マイグレーションを実行します。これにより、接続エラーが発生せずにマイグレーションが成功するはずです。

まとめ
PrismaとSupabaseを使用する際、migrate devで問題が発生する場合の一般的な原因とその対処法について解説しました。正しい環境変数を設定し、スムーズにマイグレーションを実行しましょう。

Discussion