【发布时间】:2022-11-10 02:54:26
【问题描述】:
我正在尝试通过我在本地开发的 Cloud Run 应用程序 (Node.js) 访问我的 Cloud SQL 数据库 (PostgreSQL)(使用 Cloud Code 作为 VS Code 扩展的一部分)。
我可以通过终端中的 Cloud SQL Auth 代理访问数据库(使用 psql "host=127.0.0.1 port=5432 sslmode=disable dbname=*** user=***"),但一直无法从本地 Cloud Run 成功连接。
Cloud SQL 数据库在我的 Cloud Run 项目中设置为连接。
我已经尝试(但失败)了两种尝试连接的方法:
-
使用实例连接名称:当我做这样的事情时:
const pg = require('knex')({ client: 'pg', connection: { user: '...', password: '...', database: '...', host: '/cloudsql/...', }, debug: true, });我收到以下错误:
connect ENOENT /cloudsql/.../.s.PGSQL.5432"- 使用本地主机和端口:当我做这样的事情时:
const pg = require('knex')({ client: 'pg', connection: { user: '...', password: '...', database: '...', host: '127.0.0.1', port: 5432, }, debug: true, });我收到以下错误:
Error: connect ECONNREFUSED 127.0.0.1:5432
【问题讨论】:
-
你的主机看起来像
/cloudsql/myproject:us-central1:myinstance吗? -
澄清一下:-当您在本地开发 Cloud Run 应用程序时,您的 Cloud SQL 代理是否继续运行? - 您的应用程序在本地运行时是否能够连接到数据库而无需 Cloud Code 中的 Cloud Run 模拟器(通常您也可以在本地运行 CR Local 应用程序,具体取决于您使用的 GCP 服务数量)
-
@enocom,是的——这就是我一直试图用于主机的,但我不认为该文件实际上是作为我的 Cloud Run 实例的一部分安装的(在我的本地开发机器上)
-
@IvanPortyankin,Cloud SQL 代理正在运行,我可以直接从终端连接到它,但我根本无法从通过 Cloud Code 在本地运行的 Cloud Run 应用程序连接
标签: node.js postgresql google-cloud-sql google-cloud-run google-cloud-code