带有Cloud SQLError的Google App Enging上的Node.JS:连接ENOENT / cloudsql /

时间:2018-11-20 07:43:43

标签: node.js google-app-engine google-cloud-sql

我已成功将我的应用程序部署到Google App Engine。我的数据库已启动并在Cloud SQL上运行。通过在云SQL的授权网络上对我的开发计算机的IP进行白化处理,我可以从本地计算机连接到数据库,而不会出现问题。但是,当我部署到生产环境时,会得到:

Error: connect ENOENT /cloudsql/<my project id>:asia-south1:<my database instance name>

我的app.yaml文件如下:

runtime: nodejs  
env: flex

manual_scaling:  
  instances: 1
resources:  
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

env_variables:
  ST_ENV: 'Production' //Used to set the app listening on the below port
  ST_PORT: '8080'
  SQL_USER: '<username>'
  SQL_PASSWORD: '<password>'
  SQL_DATABASE: '<databasename>'
  INSTANCE_CONNECTION_NAME: '/cloudsql/<my project id>:asia-south1:<my database instance name>'

  beta_settings:
  cloud_sql_instances: '<my project id>:asia-south1:<my database instance name>'

我的配置文件如下:

database: {             
            connectionLimit: 10,
            // host     : process.env.INSTANCE_CONNECTION_NAME,
            socketPath: process.env.INSTANCE_CONNECTION_NAME,
            user     : process.env.SQL_USER,  
            password : process.env.SQL_PASSWORD,  
            database : process.env.SQL_DATABASE,
            multipleStatements : true

        }

我正在创建一个连接池(我已经简化了此示例的代码):

var db = config.production.database;
var pool = mysql.createPool(db);

我已经能够通过本地cloud_sql_proxy从本地计算机成功连接。

我尝试使用Cloud SQL实例的IP作为主机,但这给了我以下错误:

Error: connect ECONNREFUSED 127.0.0.1:3306'

我还尝试将主机指定为0.0.0.0和端口3306并得到:

Error: connect ECONNREFUSED 0.0.0.0:3306'

编辑:同时启用了Cloud SQL和Cloud SQL Admin API:

enter image description here

这就像在推向生产时,应用程序引擎正在尝试使用不存在的代理。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

请查看connecting from the Node.js runtime on App Engine Flexible的特定说明。您可以使用实例连接名称和其他一些环境变量来配置连接。无需提供主机名或在实例上安装SQL代理。尝试连接到Cloud SQL实例won't work from App Engine的公共IP。