MeWrite Docs

Can't reach database server

Prismaがデータベースサーバーに接続できない場合に発生

概要

Prismaがデータベースサーバーに接続できない場合に発生するエラーです。接続文字列やネットワーク設定の問題が主な原因です。

エラーメッセージ

Error: Can't reach database server at `localhost`:`5432`
Please make sure your database server is running at `localhost`:`5432`.

原因

  1. データベースが起動していない: サービスが停止
  2. 接続文字列の誤り: ホスト、ポート、認証情報が間違い
  3. ファイアウォール: ポートがブロック
  4. SSLの設定: 必要なSSL接続がない

解決策

1. データベースの起動確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# PostgreSQL
sudo systemctl status postgresql
sudo systemctl start postgresql

# MySQL
sudo systemctl status mysql
sudo systemctl start mysql

# Docker
docker ps
docker start postgres-container

2. 接続文字列を確認

1
2
3
4
5
6
7
8
# .env
DATABASE_URL="postgresql://user:password@localhost:5432/mydb?schema=public"

# MySQL
DATABASE_URL="mysql://user:password@localhost:3306/mydb"

# SQLite
DATABASE_URL="file:./dev.db"

3. SSL接続を設定

1
2
# PostgreSQL with SSL
DATABASE_URL="postgresql://user:password@host:5432/mydb?sslmode=require"

4. 接続プールを調整

1
2
3
4
5
6
7
8
9
// prisma/schema.prisma
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}
1
2
# 接続プール設定
DATABASE_URL="postgresql://user:password@localhost:5432/mydb?connection_limit=5"

5. Prisma Clientを再生成

1
npx prisma generate

6. マイグレーションを実行

1
npx prisma migrate dev --name init

7. Docker Composeでネットワーク確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# docker-compose.yml
services:
  app:
    depends_on:
      - db
    environment:
      DATABASE_URL: postgresql://user:password@db:5432/mydb

  db:
    image: postgres:15
    ports:
      - "5432:5432"

Node.js の他のエラー

最終更新: 2025-12-09