Prisma Postgres を使用したローカル開発
Prisma Postgres は、本番環境レベルのクラウドネイティブなデータベースであり、ステージング環境や本番環境に最適です。迅速な反復と分離されたテストのために、prisma dev
コマンドを介して、PGliteによって提供されるローカル Prisma Postgres インスタンスを実行できます。このページでは、ローカル Prisma Postgres データベースのインストールと起動方法について説明します。
ローカル Prisma Postgres はプレビュー版であり、活発に開発されています。
Prisma Postgres のローカル開発のセットアップ
開発用にローカル Prisma Postgres をセットアップするには、次の手順に従ってください。
ローカル Prisma Postgres には Node.js 20 以降が必要です。必ず実行していることを確認してください。
1. ローカル Prisma Postgres の起動
プロジェクトに移動し、次のコマンドを使用してローカル Prisma Postgres サーバーを起動します。
npx prisma dev
これにより、Prisma ORM または別のツールを使用して接続できるローカル Prisma Postgres サーバーが起動します。コマンドの出力は次のようになります。
$ npx prisma dev
✔ Great Success! 😉👍
Your prisma dev server default is ready and listening on ports 63567-63569.
╭──────────────────────────────╮
│[q]uit [h]ttp url [t]cp urls│
╰──────────────────────────────╯
次に
- q で終了
- h で Prisma ORM を介した接続を可能にする接続 URL を表示
- t で 任意のツール を介した接続を可能にする接続 URL を表示
Prisma ORM を介して接続したい場合は、キーボードの h を押し、DATABASE_URL
をコピーして .env
ファイルに保存します。これはローカル Prisma Postgres サーバーへの接続に使用されます。
DATABASE_URL="prisma+postgres://localhost:51213/?api_key=__API_KEY__"
DATABASE_URL
は、Prisma がローカル Prisma Postgres サーバーに接続するために使用する接続文字列であり、Prisma Postgres 拡張機能と互換性があります。
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())
これにより、ローカル Prisma Postgres から本番環境の Prisma Postgres に切り替える際に、追加のコード変更が不要になります。
アプリケーションの作業中は、ローカル Prisma Postgres サーバーをバックグラウンドで実行したままにしてください。
2. マイグレーションの適用とデータのシード
次に、別のターミナルタブで、prisma migrate dev
コマンドを実行してデータベースを作成し、マイグレーションを実行します。
npx prisma migrate dev
prisma migrate dev
コマンドを実行する前に、ローカル Prisma Postgres サーバーが実行されていることを確認してください。
異なるポートを使用する必要がある場合は、--port <number>
(例: npx prisma migrate dev --port 5422
) を追加し、DATABASE_URL
(またはその他の接続設定) を一致するように更新してください。
これにより、データベースが作成され、マイグレーションが実行されます。
データベースをシードするためのシーダースクリプトがある場合は、このステップで実行する必要があります。
3. アプリケーションをローカルで実行する
アプリケーションの開発サーバーを起動します。これで、Prisma ORM を使用してローカル Prisma Postgres インスタンスに対してクエリを実行できます。
本番環境へ移行するには、.env
ファイル内のデータベース URL を Prisma Postgres 接続 URL に更新するだけで、追加のアプリケーションロジックの変更は不要です。
異なるローカル Prisma Postgres インスタンスの使用
prisma dev
コマンドの --name
(-n
) オプションを使用して、特定のローカル Prisma Postgres インスタンスをターゲットにできます。例:
npx prisma dev --name mydb1
prisma dev
に --name mydb1
を渡すたびに、コマンドは mydb1
と呼ばれるローカルインスタンスを指す同じ接続文字列を返します。
任意の ORM でローカル Prisma Postgres を使用する
ローカル Prisma Postgres はダイレクト TCP 接続をサポートしており、任意のツールを介して接続できます。
ローカル Prisma Postgres インスタンスに接続するには、prisma dev
によって返される postgres://
接続文字列を使用します。
Prisma VS Code 拡張機能によるローカル Prisma Postgres インスタンスの管理
Prisma VS Code 拡張機能には、Prisma Postgres インスタンスを管理するための専用 UI があります。
これを使用するには、VS Code 拡張機能をインストールし、VS Code エディターのアクティビティバーにある Prisma ロゴ を見つけてください。これにより、以下のワークフローが有効になります。
- データベースの作成と削除
- 特定のデータベースのサーバーの起動と停止
- "クラウドへプッシュ": データベースをローカルからリモートへ移動
既知の制限事項
キャッシュはローカルでモックされています
Prisma Postgres のキャッシュはローカルでシミュレートされます。クエリは常にローカルの Prisma Postgres インスタンスと直接対話し、キャッシュ構成をバイパスします。
const users = await prisma.user.findMany({
cache: { ttl: 60 },
});
ステージング環境や本番環境で Prisma Postgres を使用している場合、キャッシュは正常に機能します。
単一接続のみ
ローカル Prisma Postgres データベースサーバーは、一度に1つの接続しか受け付けません。追加の接続試行は、アクティブな接続が閉じるまでキューに入れられます。この制約は、ほとんどのローカル開発およびテストシナリオで十分です。
Prisma Postgres の制限事項はローカル Prisma Postgres データベースにも適用されます
すべての Prisma Postgres の制限事項は、Prisma Postgres のローカル開発にも適用されます。詳細については、Prisma Postgres の制限事項ドキュメントを参照してください。
HTTPS 接続なし
ローカル Prisma Postgres サーバーは HTTPS を使用しません。自己ホストすることは推奨しません。