ENOENT从App Engine连接到Google Cloud SQL时

我正在尝试在Google App Engine上部署Node.js应用程序,并且部署正常,但由于某些原因无法连接到Google Cloud SQL。 以下是它抛出的:

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

以下是我如何configuration连接:

 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必须在同一个项目同一个区域,但是我不确定。

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

  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

ENOENT基本上是指“这个path不是文件或目录”。

看看你的socketPath ,似乎不太可能(对我来说,至less)在你的机器上有一个/cloudsql目录。 (这将是文件系统根目录中的一个cloudsql目录。)

如果不知道你的文件系统的布局,我不能确定,但​​更有可能的是你有./cloudsql这是当前目录中的一个cloudsql目录,或者可能是一个../cloudsql目录。 (这听起来可能与您在编写App Engine和Cloud SQL时位于同一项目中时的含义相同。)

如果不是这样,find你的cloudsql目录,并使用它的绝对path,或者尝试process.cwd()的相对path。

确保你已经在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