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
- 修改示例Hello World Node.js代码在Google Compute Engine中不起作用
- gcloud节点数据存储 – 如何在单个事务中过滤多个实体密钥?
- 在Google App Engine上部署socket.io
- 当使用'gcloud'模块时,NodeJs Google计算引擎无效ELF标头
- 在GAE Flex上禁用使用admin SDK node.jsloggingFirebase数据库
- 使用Google云端存储存储的图片的属性
- 如何使用Google App Engine实例处理Google Cloud Load Balancer中的502s?
- 如何使用Node API从Google Cloud Storage返回指定的图像大小?
- 我可以浏览node.js项目的本地Google Datastore模拟器数据吗?