Prisma で「Can't reach database server」(P1001)が解決できない
P1001 Can't reach database server は、Prisma がデータベースに接続できないときに出る。
DB の起動状態とホスト・ポート・認証情報、接続 URL を確認すれば解消する。
#prisma#connection#p1001
公開: 更新:
要約
P1001: Can't reach database server at {host}:{port} は、Prisma が指定したホストとポートのデータベースに到達できないときに出る。
これは PrismaClientInitializationError として投げられ、接続が確立できないことを示す(公式: Error Reference)。
DB の起動状態、接続 URL のホスト・ポート・認証情報を順に確認すれば切り分けられる。
よくある原因
- データベースサーバーが起動していない、またはポートが違う。
DATABASE_URLのホスト名・ポート・認証情報が誤っている。- Docker で
localhostを指しているが、コンテナ間では service 名で解決する必要がある。 - ファイアウォールや SSL 要件で接続がブロックされている。
解決策
1. DB の起動とポートを確認する
# 例: PostgreSQL がポート 5432 で待ち受けているか
pg_isready -h localhost -p 54322. DATABASE_URL を見直す
DATABASE_URL="postgresql://user:pass@HOST:PORT/db?schema=public"P1001 は host:port に到達できないことを示すので、まず接続先の値が正しいかを確認する。
3. Docker Compose では service 名で接続する
# localhost ではなく compose の service 名を使う
DATABASE_URL="postgresql://user:pass@db:5432/app"別コンテナの DB へは localhost ではなく Compose のサービス名で名前解決する。