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必须在同一个项目和同一个区域,但是我不确定。
使用以下命令检查日志中是否有任何错误:
-
以下cmd
gcloud app logs tail -s default
或者,
有可能您没有为您的项目启用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