Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从App Engine连接到Google Cloud SQL时发生异常_Mysql_Node.js_Google App Engine - Fatal编程技术网

Mysql 从App Engine连接到Google Cloud SQL时发生异常

Mysql 从App Engine连接到Google Cloud SQL时发生异常,mysql,node.js,google-app-engine,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 = {

我正在尝试在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
}
我正在使用
节点mysql
模块连接到数据库

应用程序引擎和云SQL已经在同一个项目中。
我的理论是,应用程序引擎和云SQL必须位于同一个项目和同一个区域,但我不确定。

在启动过程中,使用以下方法检查日志是否存在任何错误:

  • 下面的cmd
    gcloud应用程序记录tail-s默认值

  • 使用日志查看器


  • 您可能尚未为您的项目启用云SQL API:

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

    参考:显然,你做事的顺序很重要

  • 启用云SQL API
  • 然后(重新)部署您的应用程序(gcloud app deploy)

  • 当我执行
    deploy->create databases->enable sqlipi
    时,我得到了enoint错误

    我不知道刚才发生了什么,但事情本身就解决了。我想这与Google App Engine的Node.js支持仍处于测试阶段有关。在调试或类似的过程中,你有没有可能从你的
    socketPath中删除了领先的
    /
    。它起作用了,但现在突然之间就不起作用了。当我将应用程序引擎的实例ip添加到允许的云sql网络时,它可以工作。应用程序引擎和云SQL在同一个项目中。@jimmy,嘿,你是怎么做到的?谢谢@LeDinhNhatKhanh也许这有帮助:我忘了我做了什么,但由于不启用云SQL API是最可能的问题,这里有10点。这是我遇到的问题。我发现很难相信Google Cloud文档中没有提到你必须先打开Cloud SQL API,然后使用beta_设置部署你的应用程序:Cloud_SQL_实例:Google在concole中的日志告诉你,如果配置正确,你必须激活SQL Admin API,而文档没有。。。但您没有说的是,在部署之前必须激活API。如果您看到日志,请在日志条目中给出的URL上激活API,然后重新部署您的应用程序。我确认顺序很重要。日志告诉我必须激活API,但不是必须重新部署应用程序。荣誉