prisma无法连接到postgresql

rdlzhqv9  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(366)

我已经尝试连接Prisma与postgreSQL几次。Prisma显示此错误消息:“错误:未定义:“postgresql://postgres:密码@本地主机:5432/链接器”中的端口号无效。

  • 错误x1c 0d1x
  • 棱镜/.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”。

我进入pgAdmin 4,看到了服务器的属性。端口号是5432,如下图所示,用户名设置为“postgres”。

我不知道为什么prisma不能连接
是不是漏了什么?

vshtjzan

vshtjzan1#

用百分比编码替换特殊字符

确保在.env文件的DATABASE_URL中,用户名和密码中的特殊字符被替换为百分号编码。
例如,在您的数据库URL中,如果您的用户名或口令包含@字符,则应将其替换为相应的百分比编码,即%40。对于#,则为%23,依此类推。请参阅下面的列表。

百分比编码

以下是常用特殊字符的百分比编码:
| 特殊字符|百分比编码|
| - -|- -|
| !| %21|
| #| %23|
| $个|%24个|
| %| %25个|
| &个|%26|
| '个|%27|
| (| %28个|
| x1米20英寸|%29|
| *个|%2A个|
| +个|x1米25英寸1x|
| ,个|%2C个|
| /个|%2F个|
| x1米30英寸|%3A|
| ;| %3B|
| x1米34英寸|x1米35英寸|
| x1米36英寸1x| x1米37英寸1x|
| x1米38英寸1x| x1米39英寸1x|
| x1米40英寸|%5B个|
| ]个|%5D个|
| newline个|%0A%0D%0D%0A|
| space个|%20个|
| x1米50英寸|%22|
| x1个月52个月1x| %25个|
| -个|x1米55英寸1x|
| .个|%2E个|
| <个|%3C个|
| >个|%3E|
| \个|%5C个|
| ^个|%5E个|
| _个|%5F|
| ```个|60%|
| {个|x1米70英寸|
| |个|%7C个|
| }个|%7D个|
| ~个|%7E个|
| £个|%C2%A3个|
| 个|x1米80英寸|

v8wbuo2f

v8wbuo2f2#

对于任何遇到这个问题的人,请看上面关于答案的评论!
从数据库密码(托管在AWS RDS上)中删除符号为我解决了这个问题。

qhhrdooz

qhhrdooz3#

您应该将密码转换为URL编码格式,以便在数据库连接字符串中使用它。
接受的答案正确。
但我想展示一个编程和简单的解决方案,因为手动替换密码中的特殊字符很容易出错。
您的机器上已经安装了NodeJS(显然,因为您正在尝试使用Prisma)
打开一个终端并启动一个NodeJS进程(当前目录无关紧要):

node

然后键入以下内容,按Enter键:

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

因此,您将在控制台上打印出密码的URL编码版本:

'YOUR_PASSWORD_URL_ENCODED'

复制它(不带引号)并在数据库连接字符串中将其用作密码。

相关问题