从App Engine连接到Google Cloud SQL时ENOENT

sta*_*af1 8 mysql google-app-engine node.js

我正在尝试在Google App Engine上部署我的Node.js应用程序并且部署得很好,但由于某种原因它无法连接到Google Cloud SQL.这是它抛出的东西:

Error: connect ENOENT /cloudsql/my-project-id:asia-east1:my-sql-instance
Run Code Online (Sandbox Code Playgroud)

这是我配置连接的方式:

if (process.env.INSTANCE_CONNECTION_NAME) {
     exports.mysqlConfig = {
         user: process.env.GCLOUD_SQL_USERNAME,
         password: process.env.GCLOUD_SQL_PASSWORD,
         socketPath: '/cloudsql/' + process.env.INSTANCE_CONNECTION_NAME
     }
} else {
    // Use settings for localhost
}
Run Code Online (Sandbox Code Playgroud)

我正在使用node-mysql模块连接到数据库.

App Engine和Cloud SQL已经在同一个项目中.我的理论是App Engine和Cloud SQL必须在同一个项目同一个区域,但我不确定.

jer*_*mel 15

使用以下命令检查日志中的任何错误:

  1. 以下cmd gcloud app logs tail -s default或,

  2. 使用日志查看器https://console.cloud.google.com/logs/viewer

您可能没有为项目启用Cloud SQL API:https://console.developers.google.com/apis/api/sqladmin/overview

  • 这是我的问题.我发现很难相信谷歌云文档中没有提到你必须首先启用Cloud SQL API,然后使用beta_settings部署你的应用程序:cloud_sql_instances:<INSTANCE_NAME> (7认同)

Dee*_*til 7

确保在app.yaml中添加了以下设置

beta_settings:
  # The connection name of your instance, available by using
  # 'gcloud beta sql instances describe [INSTANCE_NAME]' or from
  # the Instance details page in the Google Cloud Platform Console.
  cloud_sql_instances: YOUR_INSTANCE_CONNECTION_NAME
Run Code Online (Sandbox Code Playgroud)

参考:https://cloud.google.com/appengine/docs/flexible/nodejs/using-cloud-sql-postgres


Ode*_*Dov 7

对于使用第二代云功能的任何人 - 他们在文档中添加了一部分:

如果您使用的是 Cloud Functions(第二代)而不是 Cloud Functions(第一代),则需要以下内容(另请参阅配置 Cloud Run):

他们继续列出所需的步骤。它们有点吓人,但最终还是有用的。

(如果您发现自己在新的 Cloud Run 修订版中寻找 SQL 连接,请注意有一个单独的“连接”选项卡)