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プロジェクトをローカル開発、ステージング、本番環境で適切なコネクションプーリングでデータベースに接続するための設定。