最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin9浏览0评论

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

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

我想作为托管在谷歌的云应用程序引擎的Node.js应用程序实现的API。该API利用该数据库是一个与云SQL实例承载一个PostgreSQL 9.6数据库。该数据库连接到通过Knex Node.js的API。

当在App Engine上托管的API端点不需要与数据库做工精细任何接触。然而,当数据库需要接触,以完成API调用,出现在日志中出现以下错误:

未处理的拒绝TimeoutError:Knex:超时取得联系。池可能是满的。是否缺少.transacting(TRX)调用?

但是,如果我用Knex通过本地主机连接到云SQL实例本地和解决API:3000,API调用需要数据库完成完美的罚款。这验证了在Cloud SQL的PostgreSQL数据库实例工作正常,并在App Engine上被托管正在迁移到云SQL实例失败的连接是一些关于兴田的Node.js应用。

我连接到像这样的数据库:

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

此外,本地连接成功,App Engine的连接失败。

app.yaml文件如下:

runtime: nodejs
env: flex
beta_settings:
  cloud_sql_instances: my-project-12345:us-central1:mydatabase

为了确保这不是一个权限问题,我理所当然[email protected]云SQL客户端许可的App Engine服务帐户。我也验证了云SQL实例部署在同一区域在App Engine上的Node.js应用。

我的问题是:为什么不能Node.js加载在App引擎连接到云SQL实例,如果它可以连接到它在本地?

回答如下:

按照瓦迪姆的评论,UNIX插座必须使用从App Engine的连接到云SQL否则IP白名单必须参与,这东西对于如何做小导游。

要做到这一点,我们简单地改变从host到Unix套接字35.194.32.254/cloudsql/my-project-12345:us-central1:mydatabase

module.exports = require('knex')({
    client: 'pg',
    debug:  true,
    connection: {
        host : '/cloudsql/esp-mobile-182605:us-central1:esp-db', // 127.0.0.1 for local testing, 35.194.32.254 to locally use hosted db on Cloud SQL
        user: 'postgres',
        password: 'seniordesign',
        database: 'esp_db'
    },
});
发布评论

评论列表(0)

  1. 暂无评论