无法将CloudRun服务连接到CloudSQL实例(Nodejs-Express-Typeorm)服务器

时间:2019-05-09 21:29:43

标签: node.js google-cloud-sql typeorm cloud-sql-proxy google-cloud-run

使用CloudRun将node-express-typeorm服务器与CloudSQL Postgres实例连接时出现问题。

我已经根据官方文档https://cloud.google.com/run/docs/configuring/connect-cloudsql

成功添加了数据库代理。

并将快递服务的环境变量设置为

TYPEORM_URL=/cloudsql/[CONNECTION NAME]

但是该应用无法启动,因为无法连接数据库。

2 个答案:

答案 0 :(得分:2)

我已经解决了这个问题。罪魁祸首是TypeORM。 TypeORM正在使用TYPEORM_URL分隔符从/解析数据库主机。而且它仅读取cloudsql而不是/cloudsql/[CONNECTION NAME]。因此,该应用程序无法连接到正确的端点。

要解决此问题,请设置以下环境变量,而不是TYPEORM_URL

TYPEORM_HOST=/cloudsql/[CONNECTION NAME]

TYPEORM_USERNAME=<username>

TYPEORM_PASSWORD=<password>

TYPEORM_DATABASE=<db>

答案 1 :(得分:0)

我也面临着类似的问题,尽管我已经听了您的意见,但还是有问题。可以共享您的连接配置吗?

这是我的

let confBase: PostgresConnectionOptions = {
    type: "postgres",
    host: dbHOST as string,
    port: parseInt(dbPORT as string, 10),
    username: dbUSER,
    password: dbPWD,
    database: dbDATABASE,
    synchronize: true,
    logging,
};

在主机中,如果有这样的字符串

dbHOST = "/cloudsql/THEPROJECT:THEREGION:THEINSTANCE"

但是,当尝试连接时,出现以下错误:

 at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'connect',
  address: '/cloudsql/THEPROJECT:THEREGION:THEINSTANCE/.s.PGSQL.5432'

我现在面对这个问题已有一段时间了。 我检查了几次用户并验证,他们都还可以

Rgds