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

NodeJS应用部署GCP App Engine连接GCP SQL失败求助

解决App Engine连接Cloud SQL PostgreSQL失败问题

错误原因分析

getaddrinfo ENOTFOUND xyz-xyz-444412:europe-central2:gcp-sql-database-name 表明pg库错误地将Cloud SQL连接名当作TCP主机名进行DNS解析,而非识别为Unix套接字路径,导致解析失败。


解决方案一:修复Unix套接字连接

  1. 修正代码中host的写法
    确保host值严格为/cloudsql/[Cloud SQL连接名],可尝试直接使用字符串而非模板字符串避免潜在问题:
    const pool = new Pool({
        user: 'postgres',
        host: '/cloudsql/xyz-xyz-444412:europe-central2:gcp-sql-database-name',
        database: 'database-name-created-in-pgadmin',
        password: 'password',
        port: 5432, 
    });
    
  2. 验证App Engine配置
    确认app.yaml中beta_settings.cloud_sql_instances的连接名与代码中完全一致,无多余空格或符号。
  3. 检查服务账号权限
    确保App Engine使用的服务账号已添加Cloud SQL Client角色(这是连接Cloud SQL的核心必备权限)。

解决方案二:改用公网IP连接(快速生效方案)

由于你的Cloud SQL实例已开启公网IP,可直接通过公网连接:

  1. 配置SQL实例授权网络
    在GCP控制台的Cloud SQL实例页面,将App Engine的出站IP(33.333.27.157)添加到授权网络列表,格式为33.333.27.157/32。
  2. 修改数据库连接代码
    将host替换为Cloud SQL的公网IP,并添加SSL配置(Cloud SQL公网连接强制要求SSL):
    const pool = new Pool({
        user: 'postgres',
        host: '12.123.123.23',
        database: 'database-name-created-in-pgadmin',
        password: 'password',
        port: 5432,
        ssl: {
            rejectUnauthorized: false
        }
    });
    

额外排查点

  • 确认数据库名称、用户名、密码与PGAdmin连接时的信息完全一致。
  • 重新部署App Engine应用,确保所有配置修改已生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:22:41