0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Prisma】npx prisma migrate dev実行時、「Can't reach database server at `localhost:3306`」というエラーを解決

Last updated at Posted at 2024-07-06

環境

command                | version
--------------------------------------------------------------------------
wsl --version          | WSL バージョン: 2.2.4.0
docker --version       | Docker version 26.1.4, build 5650f9b
docker compose version | Docker Compose version v2.27.1-desktop.1
npm --version          | 10.7.0
node --version         | v20.15.0
mysql --version        | mysql  Ver 8.0.38 for Linux on x86_64
mysql -u root -p${PW}  | Server version: 8.0.38 MySQL Community Server

エラー詳細

バックエンド用コンテナとDBコンテナを使用している。下記コマンドをバックエンド用コンテナから実行したとき、下記のエラーメッセージが表示された。

  • エラーが発生したコマンド
npx prisma migrate dev --name init
  • エラーメッセージ
root@9d2e635a5c67:/app# npx prisma migrate dev --name init
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "sample" at "localhost:3306"

Error: P1001: Can't reach database server at `localhost:3306`

Please make sure your database server is running at `localhost:3306`.
root@9d2e635a5c67:/app#
  • prisma.schema
prisma.schema
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = "mysql://root:root@localhost:3306/sample"
}

model User {
  id    Int    @id @default(autoincrement())
  name  String
  email String @unique
}

解決方法

  • prisma.schema の URL を localhost ではなく docker-compose.yml に記載したサービス名とする
prisma.schema
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
-  url      = "mysql://root:root@localhost:3306/sample"
+  url      = "mysql://root:root@db:3306/sample"
}

model User {
  id    Int    @id @default(autoincrement())
  name  String
  email String @unique
}
docker-compose.yml
...
...
services:
  db:
    build: ./db
    ports:
      - '3306:3306'

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?