簡體   English   中英

棱鏡無法連接到 postgresql

[英]prisma can't connect to postgresql

我曾多次嘗試將 Prisma 與 postgreSQL 連接起來。 prisma 顯示此錯誤消息:“錯誤:未定義:“postgresql://postgres:password@localhost:5432/linker”中的端口號無效)”。

-錯誤在此處輸入圖像描述

-棱鏡/.env

DATABASE_URL=postgresql://postgres:password@localhost:5432/linker

-schema.prisma

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

所以,首先,我檢查了端口號是否正確,5432 是正確的,因為我使用的是默認端口號。 我還檢查了 postgresql.conf 文件,該文件設置為“listen_address="*"”、“port=5432”。

在此處輸入圖像描述

我進入 pgAdmin4 並查看了服務器的屬性。 端口號為 5432,如下圖所示,用戶名設置為“postgres”。

在此處輸入圖像描述

不知道為什么prisma連接不上
我錯過了什么嗎?

用百分比編碼替換特殊字符

確保在.env文件中的DATABASE_URL中,特殊字符被替換為百分比編碼。

例如,如果您的用戶名或密碼包含@字符,則應將其替換為等效的百分比編碼,即%40 對於#它是%23等等。 請參閱下面的列表。

百分比編碼

以下是常用特殊字符的百分比編碼:

特殊字符 百分比編碼
! %21
# %23
$ %24
% %25
& %26
' %27
( %28
) %29
* %2A
+ %2B
, %2C
/ %2F
: %3A
; %3B
= %3D
? %3F
@ %40
[ %5B
] %5D
newline %0A%0D%0D%0A
space %20
" %22
% %25
- %2D
. %2E
< %3C
> %3E
\ %5C
^ %5E
_ %5F
` %60
{ %7B
| %7C
} %7D
~ %7E
£ %C2%A3
%E5%86%86

對於遇到此問題的任何人,請參閱上面關於答案的評論!

從 db 密碼(托管在 AWS RDS 上)中刪除符號為我解決了這個問題。

您應該將密碼轉換為 URL 編碼格式,以便在數據庫連接字符串中使用它。

接受的答案是正確的。

但我想展示一個程序化且簡單的解決方案,因為手動替換密碼中的特殊字符很容易出錯。

您的機器上安裝了 NodeJS(顯然,因為您正在嘗試使用 Prisma)

打開終端並啟動 NodeJS 進程(當前目錄無關緊要):

node

然后輸入這個,按回車:

     new URLSearchParams({pass: "YOUR_PASSWORD_WITH_SPECIAL_CHARACTERS"}).toString().substring(5)

結果,您將獲得密碼的 URL 編碼版本打印到控制台:

'YOUR_PASSWORD_URL_ENCODED'

復制它(不帶引號)並在您的數據庫連接字符串中使用它作為您的密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM