我正在尝试从node.js样本部署postgresDemo函数。 但是我在连接到我的云SQL实例方面没有成功。
我使用以下命令发布函数: gcloud beta functions deploy postgresDemo --runtime nodejs8 --env-vars-file env.yaml --trigger-http
我添加了控制台日志以查看所有需要的环境变量是否正确填充,这很好。但是当我尝试创建 pg 时。池,我有以下错误:
错误:连接 ECONN,拒绝 127.0.0.1:5432 Object._errnoException (util.js:1022:11( at _exceptionWithHostPort (util.js:1044:20( at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14( code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect', 地址:"127.0.0.1", 端口:5432
我的 App Engine Java 应用程序正在使用此云 SQL 实例。但是在节点云功能中,我的连接并不成功。
这是我的参数,只省略了用户和密码:
max: 1, user: 'username', password: 'password', database: 'appengine_helloworld_db', socketPath: '/cloudsql/hello-world-4736435:southamerica-east1:hello-world-postgis-sp'
对于遇到此问题的其他任何人,我必须安装并运行Cloud SQL Proxy: https://cloud.google.com/sql/docs/postgres/quickstart-proxy-test
可能很明显,但如果你直接跳到这个例子,你可能会错过它。 对于云函数,一个潜在的错误来源也是您的活动项目是什么。
gcloud config list
如果您使用的是 knex,Postgres 还会在您的连接对象中查找主机参数。 添加为我解决了它:
const connectionName = 'your-project:region:instance-name';
const options = {
client: 'pg',
connection: {
user: ....,
password: ....,
database: ....,
host: `/cloudsql/${connectionName}`
}
};
const knex = require('knex')(options);