2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Next.jsでPrismaを使ってPostgreSQLに接続する際にハマったポイントと、その解決法について紹介します。

環境

  • Next.js v14
  • Prisma 5.16.0
  • PostgreSQL

問題の概要

以下の通り、Prismaを使ってPostgreSQLに接続しようとしたところ、接続エラーが発生してしました。

schema.prisma
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

// その他のスキーマ定義...
.env
DATABASE_URL='postgresql://postgres.*******:P@ssword@aws-0-ap-northeast-1.***.***:****/***'
エラーメッセージ
PS C:\Users\USER\Dev\*****\*****> npx prisma db push
Environment variables loaded from .env
Prisma schema loaded from prisma\schema.prisma
Datasource "db": PostgreSQL database "postgres", schema "public" at "*****.********.***:****"

Error: P1001: Can't reach database server at `*****.********.***:****`

Please make sure your database server is running at `*****.********.***:****`.

対処

エラーコードをGithub Copilotに投げる
image.png
指示に従って設定を確認するも効果なし

パスワードを変更したら治った<<なぜ?

今回の原因と解決方法

今回の問題は、パスワードに@が含まれていたために発生しました。この場合、接続文字列が正しく解析されずにエラーが起こります。
URLエンコードでこの問題を解決しようとしましたが@のエンコード値である%25はそのまま認識されてしまうので、この問題をURLエンコードで解決することはできません。
唯一の解決策(多分)は、データベースのパスワードを変更することです。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?