M1相关!- Prisma:无法访问位于"数据库"的数据库服务器:"5432"



由于我已经转移到新的Apple Silicon架构,我使用nextjs和postgres的docker设置不再工作。我使用prisma的nextjs服务器找不到docker中的数据库。

prisma客户端无法访问端口5432上的postgres数据库。

无法访问test-postgres:5432上的数据库服务器

迁移也不起作用,并返回与上面相同的错误。

docker-compose run --publish 5555:5555 next npx prisma migrate dev

docker-compose.yml

postgres:
container_name: 'test-postgres'
restart: unless-stopped
image: 'postgres:13'
ports:
- '15432:5432'
volumes:
- 'pgdata:/var/lib/postgresql/data/'
environment:
POSTGRES_PASSWORD: postgres

.env

DATABASE_URL="postgres://postgres:postgres@localhost:15432/postgres"

我还在schema.prisma中添加了arm二进制目标schema.prisma


generator client {
provider        = "prisma-client-js"
binaryTargets   = ["native", "debian-openssl-1.1.x", "linux-arm-openssl-1.1.x", "linux-musl"]
previewFeatures = ["orderByRelation", "selectRelationCount"]
}

postgres容器实际上正在运行,我可以通过Docker桌面面板看到它。我在postgres容器中注意到的一件事是这个错误:

2021-07-21 12:52:58.927 UTC [76] ERROR:  relation "_prisma_migrations" does not exist at character 126

有人以前经历过并找到了解决方案吗?

[编辑]

如何繁殖

克隆repo,遵循README.md,查看M1苹果硅机上的预期行为:https://github.com/baristikir/prisma-postgres-M1

?connect_timeout=300添加到数据库的连接字符串中就成功了。

DATABASE_URL="postgres://postgres:postgres@localhost:15432/postgres?connect_timeout=300"

我在m1 mac mini上遇到了这个问题,解决方案是将节点的版本从v16.16.0(映像节点:16(更改为v17.9.1(节点:17(,我们在节点:18上进行了尝试,它也起作用。我更改了Dockerfile来自

FROM node:16

FROM node:17

我使用的是Node的16.17.0版本。刚切换回16.13.2,问题就解决了。

我遇到了同样的问题,我添加了?connect_timeout=300,它起了作用。我意识到在连接到数据库之前需要一些时间,尤其是当它来自云提供商时,因此出现了错误。

我只需更改数据库URL:

DATABASE_URL="postgresql://root:root@<My IP>:5432/<MY DB Name>"

而且效果很好。

相关内容

最新更新