Prisma DATABASE_URL接続文字列

Prisma ORMのDATABASE_URL環境変数の設定方法。PostgreSQL、MySQL、SQLite、MongoDB、SQL Serverの接続文字列形式を解説します。

Best Practices

詳細な説明

PrismaのDATABASE_URL

Prisma ORMはschema.prismaで参照されるDATABASE_URL環境変数からデータベース接続を読み取ります:

datasource db {
  provider = "postgresql"  // または mysql, sqlite, mongodb, sqlserver
  url      = env("DATABASE_URL")
}

プロバイダー別の形式

PostgreSQL

DATABASE_URL="postgresql://user:password@host:5432/database?schema=public"

schemaパラメータはデフォルトのPostgreSQLサーチパスを設定します。省略するとpublicがデフォルトになります。

MySQL

DATABASE_URL="mysql://user:password@host:3306/database"

SQLite

DATABASE_URL="file:./dev.db"

パスはプロジェクトルートではなく、prisma/ディレクトリ(schema.prismaが存在する場所)からの相対パスです。

MongoDB

DATABASE_URL="mongodb://user:password@host:27017/database?authSource=admin"

またはMongoDB Atlasの場合:

DATABASE_URL="mongodb+srv://user:password@cluster.example.mongodb.net/database?retryWrites=true&w=majority"

SQL Server

DATABASE_URL="sqlserver://host:1433;database=mydb;user=sa;password=secret;encrypt=true"

Prismaのコネクションプーリング

Prismaは独自のコネクションプールを管理します。connection_limitパラメータで設定できます:

DATABASE_URL="postgresql://user:pass@host:5432/db?connection_limit=10"

サーバーレス環境(Vercel、AWS Lambda)では、複数のファンクションインスタンス間での接続枯渇を避けるため、プールを小さく(1-5)保ってください。

PgBouncer

PrismaでPgBouncerを使用する場合、pgbouncer=trueを追加します:

DATABASE_URL="postgresql://user:pass@pgbouncer:6432/db?pgbouncer=true&connection_limit=5"

これによりプリペアドステートメントが無効になり、PgBouncer互換性のために接続処理が調整されます。

シャドウデータベース

prisma migrate devの場合、Prismaはシャドウデータベースが必要です。別途設定します:

SHADOW_DATABASE_URL="postgresql://user:pass@host:5432/shadow_db"

これは本番環境では不要で、開発マイグレーションでのみ必要です。

ユースケース

PrismaベースのTypescriptまたはNode.jsプロジェクトをローカル開発、ステージング、本番環境で適切なコネクションプーリングでデータベースに接続するための設定。

試してみる — Connection String Builder

フルツールを開く