【问题标题】:NODE JS Knex connecting to Postgresql on GcloudNODE JS Knex 连接到 Gcloud 上的 Postgresql
【发布时间】:2020-01-17 00:57:07
【问题描述】:

现在,我正在尝试让 Google Cloud 上的 App Engine(Flex 环境)能够连接到同一项目中的 postgreSQL 服务器。 我已为 SQL 数据库概述下列出的服务帐户赋予 Cloud SQL 客户端角色。执行时,我的 knex 实例是这样配置的

const KNEX_CON = {
user: USERNAME,
    password: PASSWORD,
    database: DATABASE,
    host: "/cloudsql/PROJECT_ID:us-central1:INSTANCE"
}

const knexInstance = knex({
    client: 'pg',
    connection: KNEX_CON,
    })

我也有 app.yaml 到beta_settings: cloud_sql_instances: "PROJECT_ID:us-central1:INSTANCE"

我一直在查看文档和我能找到的每个 stackoverflow 答案。我所做的一切都不起作用。在 App Engine 中运行的任何 Knex 实例都会失败。任何不需要 knex 实例的 Express 端点都可以完美运行。当我尝试连接到 Gcloud 上的 SQL 服务器而不将我的 IP 地址列入白名单时,我不断收到相同的错误/超时。请帮帮我。

【问题讨论】:

  • 通常我希望“主机”是一个 IP 地址或服务器/dns 名称。但也许这就是适用于 knex/glcoud 的格式。你确定那位是正确的吗?
  • cloud.google.com/sql/docs/postgres/connect-app-engine 和其他堆栈溢出问题已指定使用 UNIX 套接字。对于MYSQL,那个knex设置其实叫socket,但是对于postgres,需要在host下。
  • 您是否已通过控制台注销您的配置?我认为环境变量不会像“主机”那样被替换为字符串。相反,您应该为其创建一个环境变量,例如export PG_HOST="/cloudsql/$PROJECT_ID:us-central1:$INSTANCE" 并使用“host”:PG_HOST。

标签: node.js postgresql cloud gcloud knex.js


【解决方案1】:

要在 App Engine Flex 中使用 Cloud SQL,请确保您选择了第二代实例。我遇到了一组适用于 App Engine 标准和 App Engine Flex 的 directions,它可能会帮助您连接 Next.JS。

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 2021-11-13
    • 2021-07-13
    • 2022-12-14
    • 1970-01-01
    • 2019-01-01
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多