You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Run使用Prisma连接Cloud SQL Postgres报P1001错误

NestJS 部署 Cloud Run 连接 Cloud SQL Postgres 故障排查记录

初始环境配置

技术栈选型如下:

  • 后端框架:NestJS
  • ORM 组件:Prisma
  • 数据库服务:Google Cloud SQL Postgres
  • 部署载体:Google Cloud Run

初始部署使用的 Dockerfile 配置如下:

FROM node:16

WORKDIR /
COPY package*.json ./

RUN npm install

RUN apt-get update \
  && apt-get install --no-install-recommends -y \
    wget \
  ;
RUN wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
RUN chmod +x cloud_sql_proxy


COPY . .

ENV DATABASE_URL="postgresql://USER:PASSWORDH@localhost/postgres?host=/cloudsql/CLOUD_SQL_CONNECTION_NAME/.s.PGSQL.5432"

ENV ENVIRONMENT="prod"
ENV DB_USER="DATABASE"
ENV DB_PASS="PASSWORD"
ENV DB_NAME="postgres"
ENV CLOUD_SQL_CONNECTION_NAME="CLOUD_SQL_CONNECTION_NAME"


RUN npx prisma generate
RUN npx prisma migrate deploy
RUN npm run build

EXPOSE 8080

CMD ["sh", "-c", "./cloud_sql_proxy -instances=$CLOUD_SQL_CONNECTION_NAME=tcp:0.0.0.0:5432 & npm run start:prod"]

故障表现

构建阶段直接抛出数据库连接错误,错误日志如下:

Step #0 - "Build": Error: P1001: Can't reach database server at `/cloudsql/CONNECTION_NAME/.s.PGSQL.5432`:`5432`
Step #0 - "Build": 
Step #0 - "Build": Please make sure your database server is running at `/cloudsql/CONNECTION_NAME/.s.PGSQL.5432`:`5432`.
Step #0 - "Build": The command '/bin/sh -c npx prisma migrate deploy' returned a non-zero code: 1

前期排查覆盖了网络配置、权限配置、Cloud SQL Proxy 参数、连接串格式等所有可查的公开解决方案,均未解决问题,耗时较长。

排查结论与最终方案

  • 对照验证:使用完全一致的 Dockerfile、Cloud Run 配置、Cloud SQL 权限与网络规则,部署不集成 Prisma 的简易测试项目,服务启动后可正常连接 Cloud SQL 数据库,排除基础环境配置错误的可能
  • 根因确认:故障来自 Prisma 对 Cloud SQL Unix Socket 连接模式的兼容问题,该问题在 Prisma 官方问题追踪渠道长期处于开放未修复状态
  • 方案决策:尝试过社区提供的多种临时规避方案均未生效,考虑到 NestJS 框架对 TypeORM 有完善的官方适配支持,最终选择将 ORM 层从 Prisma 切换为 TypeORM,彻底解决该连接故障。

内容的提问来源于stack exchange,提问作者user12898141

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:48:41