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

Next.js应用部署Cloud Run后无法连接Cloud SQL PostgreSQL

解决Cloud Run上Next.js连接Cloud SQL PostgreSQL时的ECONNREFUSED错误

你的错误connect ECONNREFUSED 127.0.0.1:5432说明应用在尝试通过本地TCP端口连接数据库,但Cloud Run与Cloud SQL的正确连接方式是使用Unix套接字,而非TCP localhost连接。下面是具体的修改步骤和检查项:

修改db.ts的数据库连接配置

假设你使用pg库(Next.js连接PostgreSQL的常用库),将原有的TCP连接配置替换为Unix套接字配置:

方式1:直接配置host参数

import { Pool } from 'pg';

// 初始化连接池
const pool = new Pool({
  user: process.env.DB_USER,       // 你的数据库用户名
  password: process.env.DB_PASSWORD, // 你的数据库密码
  database: process.env.DB_NAME,   // 你的数据库名称
  // 关键:使用Cloud SQL挂载的Unix套接字路径
  host: `/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}`,
});

export default pool;

方式2:使用连接字符串

import { Pool } from 'pg';

// 构建Unix套接字连接字符串
const connectionString = `postgresql://${process.env.DB_USER}:${process.env.DB_PASSWORD}@/${process.env.DB_NAME}?host=/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}`;

const pool = new Pool({
  connectionString,
});

export default pool;

关键检查项

  • 环境变量验证:确保Cloud Run服务已正确设置以下环境变量:
    • INSTANCE_CONNECTION_NAME:值为你的实例标识my-project:europe-north1:my-db
    • DB_USER、DB_PASSWORD、DB_NAME:对应你的PostgreSQL实例的认证信息和目标数据库名
  • IAM权限确认:给Cloud Run的服务账号(默认是[你的项目编号]-compute@developer.gserviceaccount.com)添加Cloud SQL Client角色,确保服务有权限访问Cloud SQL实例
  • 连接方式确认:Cloud Run服务已添加正确的Cloud SQL连接(你已完成此步骤,可再次核对实例标识是否匹配)

修改后重新部署Cloud Run服务,即可解决连接拒绝的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:33:20