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_userdb_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 deploy - 本地部署的身份验证错误

Prisma-docker 无法连接到服务器

Prisma 绑定无法连接到 prisma 服务器。请求 http://localhost:4466/ 失败,原因:连接 ECONNREFUSED 127.0.0.1:4466

prisma 基于哪个数据库服务器?

我无法使用本地 Mongodb 使用 Prisma 启动项目