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

Google Cloud Build配置Cloud SQL代理仍提示无法连接数据库服务器

问题根源与解决方法

1. 修正DATABASE_URL的连接方式

你的Cloud SQL代理通过TCP模式启动(监听127.0.0.1:5432),但DATABASE_URL里指定了Unix套接字路径host=/cloudsql/CONNECTION_NAME,导致Prisma试图通过套接字连接,而非TCP连接代理。

修改DATABASE_URL为:

DATABASE_URL=postgresql://USER:PASSWORD@localhost/DATABASE

2. 确保Cloud Build服务账号拥有Cloud SQL Client权限

Cloud Build默认使用的服务账号需具备Cloud SQL Client角色,否则代理无法建立到Cloud SQL实例的连接:

  • 进入Google Cloud控制台的IAM与管理 → IAM
  • 找到[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com账号
  • 为其添加Cloud SQL Client角色

3. 优化代理启动后的等待逻辑

固定的sleep 3可能不足以让代理完全建立连接,替换为等待5432端口可用的逻辑更可靠,比如用nc命令:

./cloud_sql_proxy -instances=CONNECTION_NAME=tcp:5432 &
# 等待端口可用
until nc -z localhost 5432; do
  sleep 1
done

修正后的cloudbuild.yaml步骤2示例

- name: 'gcr.io/${INSTANCE_NAME}'
  entrypoint: sh
  env:
    - DATABASE_URL=postgresql://USER:PASSWORD@localhost/DATABASE
  args:
    - -c
    - |
      wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
      chmod +x cloud_sql_proxy
      ./cloud_sql_proxy -instances=CONNECTION_NAME=tcp:5432 &
      until nc -z localhost 5432; do
        sleep 1
      done
      npx prisma migrate deploy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:16:05