我使用 prisma 和 node.js。
当我在 docker 容器中调用某些函数(例如 prisma.users.findAll())时,出现错误
User 'postgres' was denied access on the database 'my_db.public'
,但如果我在本地运行,则没有任何问题。
但是,我的容器是成功的,但是当我使用数据库调用任何函数时,我遇到了错误。
My docker file
FROM node:15.13.0
RUN mkdir -p /project/node_modules && chown -R node:node /project
WORKDIR /project
COPY package*.json ./
COPY --chown=node:node prisma ./prisma
COPY config ./config
RUN npm install
RUN npx prisma generate
RUN npx prisma db push --preview-feature
COPY --chown=node:node ./temp ./temp
COPY --chown=node:node . .
CMD [ "node", "index.js" ]
另外,我的数据库
my_db | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
棱镜设置
DATABASE_URL=postgresql://postgres:[email protected]:5432/my_db?connect_timeout=300&connection_limit=150
当我使用不同的主机名时,我使用的是 host.docker.internal,当我将其更改为 localhost 时,它就可以工作了。
如果您在项目中运行这两个 prisma 命令中的任何一个都可以得到相同的错误消息,
npx prisma db pull
npx prisma generate
这意味着错误来自于错误的
DATABASE_URL
值。
例如:用户应该是
chris
而不是 postgres
。
// wrong user
DATABASE_URL="postgresql://postgres:passw@localhost:5432/dbname?schema=public"
// correct user
DATABASE_URL="postgresql://chris:passw@localhost:5432/dbname?schema=public"
确保您拥有正确的值。