Prisma 无法验证数据库服务器
Posted
技术标签:
【中文标题】Prisma 无法验证数据库服务器【英文标题】:Prisma cannot authenticate database server 【发布时间】:2021-10-25 12:59:31 【问题描述】:我正在使用 docker 来启动一个 postgres 数据库:
version: '3.8'
services:
postgres:
image: postgres:13
restart: always
environment:
POSTGRES_USER: db_user
POSTGRES_PASSWORD: db_password
volumes:
- postgres:/var/lib/postgresql/data
ports:
- '5432:5432'
volumes:
postgres:
在我的/.env
文件中,我有:
DATABASE_URL="postgresql://db_user:db_password@localhost:5432/college_db?schema=public"
我启动docker:
PS C:\Users\alucardu\Documents\projects\**-react> docker-compose up -d
Starting **-react_postgres_1 ... done
检查服务器是否正在运行:
PS C:\Users\alucardu\Documents\projects\**-react> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0f9233ce34b postgres:13 "docker-entrypoint.s…" 2 minutes ago Up 33 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp **-react_postgres_1
但是当我运行 Prisma 迁移时,我得到一个身份验证错误:
PS C:\Users\alucardu\Documents\projects\movieseat-react> npx prisma migrate dev --name "init"
Environment variables loaded from .env
Prisma schema loaded from prisma\schema.prisma
Datasource "db": PostgreSQL database "college_db", schema "public" at "localhost:5432"
Error: P1000: Authentication failed against database server at `localhost`, the provided database credentials for `db_user` are not valid.
Please make sure to provide valid database credentials for the database server at `localhost`.
为什么 Prisma 不匹配集合 db_user
和 db_password
到在 docker yml 中创建的环境变量?
//编辑。
我添加了一个college_db
数据库和一个名为db_user
的超级用户,并使其成为college_db
的所有者:
但我仍然遇到同样的错误。
【问题讨论】:
问题可能是因为主机解析。您是否尝试过127.0.0.1
而不是 localhost ?
P1000: Authentication failed against database server at
127.0.0.1, the provided database credentials for
db_user` 无效。`,太糟糕了没有效果。
【参考方案1】:
什么-a-mistaka-to-make。我在我的 Windows 机器上本地安装了 postgres。因此,它使用的是 postgres 实例,而不是我的 docker 环境中的实例。我删除了 windows postgres 安装,一切都按预期工作。 https://github.com/prisma/prisma/issues/8927
【讨论】:
遇到了同样的问题,正在拉我的头发,因为我可以从我的 WSL xD 很好地连接谢谢!【参考方案2】:我认为问题是数据库名称不匹配。
尝试将 POSTGRES_DB: college_db
环境变量添加到您的 postgres 容器中。
默认情况下,init 容器使用 POSTGRES_USER 值作为数据库名称。
【讨论】:
有道理,但这不是问题所在。我已将POSTGRES_DB
添加到变量中,但仍然出现相同的错误。
您尝试时是否也删除了该卷?
是的,我已经删除了当前在 docker 中运行的所有内容并重新运行 docker compose。以上是关于Prisma 无法验证数据库服务器的主要内容,如果未能解决你的问题,请参考以下文章
Prisma v2:生成一个 .graphql 文件来编辑?
Prisma 绑定无法连接到 prisma 服务器。请求 http://localhost:4466/ 失败,原因:连接 ECONNREFUSED 127.0.0.1:4466