相关疑难解决方法(0)

Cloud SQL 实例连接在本地工作,但不在 App Engine 上工作

我正在尝试在 Google Cloud App Engine 上托管作为 Node.js 应用程序实现的 API。API 使用的数据库是 PostgreSQL 9.6 数据库,该数据库由 Cloud SQL 实例托管。数据库通过 .js 连接到 Node.js API Knex

当托管在 App Engine 上时,不需要与数据库有任何联系的 API 端点可以正常工作。但是当需要联系数据库完成API调用时,日志中出现如下错误:

未处理的拒绝 TimeoutError:Knex:获取连接超时。游泳池可能已经满了。您是否错过了 .transacting(trx) 电话?

但是,如果我使用Knex本地连接到 Cloud SQL 实例并通过 localhost:3000 寻址 API,则需要数据库的 API 调用完全可以正常完成。这将验证 Cloud SQL 上的 PostgreSQL 数据库实例是否工作正常,以及 App Engine 上托管的 Node.js 应用程序是否导致与 Cloud SQL 实例的连接失败。

我像这样连接到数据库:

module.exports = require('knex')({
        client: 'pg',
        debug:  true,
        connection: {
          host : '35.194.32.254', 
          user : 'postgres',
          password : 'mypassword',
          database : 'mydatabase'
        },
      }); …
Run Code Online (Sandbox Code Playgroud)

google-app-engine node.js google-cloud-sql knex.js google-cloud-platform

4
推荐指数
1
解决办法
3602
查看次数