从App Engine连接到Google Cloud SQL时ENOENT

时间:2017-02-01 02:52:48

标签: mysql node.js google-app-engine

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

Error: connect ENOENT /cloudsql/my-project-id:asia-east1:my-sql-instance

以下是我配置连接的方式:

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
}

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

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

3 个答案:

答案 0 :(得分:15)

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

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

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

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

答案 1 :(得分:5)

确保您在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

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

答案 2 :(得分:1)

显然你做事的顺序很重要......

  1. 启用Cloud SQL API
  2. 然后(重新)部署您的应用程序(gcloud app deploy)
  3. 当我deploy -> create databases -> enable sql ipi时,我收到了ENOENT错误