通过App Engine中的nodejs使用Sequilize连接GCP CloudSql时出错?

时间:2018-11-22 08:13:41

标签: mysql google-app-engine google-cloud-platform sequelize.js google-cloud-sql

当我尝试使用sequilize将第二代Cloud mysql与App Engine连接时,出现以下错误:

{“ name”:“ SequelizeConnectionError”,“ parent”:{“ errno”:“ ENOENT”,“ code”:“ ENOENT”,“ syscall”:“ connect”,“ address”:“ / cloudsql / phrasal-charger-215107:asia-south1:newdish123“,”致命“:true},”原始“:{” errno“:” ENOENT“,”代码“:” ENOENT“,” syscall“:”连接“ ,“地址”:“ / cloudsql / phrasal-charger-215107:asia-south1:newdish123”,“致命”:true}}

  

Sequelize选项集:-

const db = new Sequelize(
  config.database.db,
  config.database.username,
  config.database.password,
  {
    host:'localhost',
    dialect: "mysql",
    port: 3306,
    dialectOptions: {
        socketPath: '/cloudsql/phrasal-charger-215107:asia-south1:newdish123'
    }
  }
);
  

app.yaml

runtime: nodejs
env: flex


beta_settings:
  cloud_sql_instances: phrasal-charger-215107:asia-south1:newdish123

更多信息

我尝试将'/ cloudsql / phrasal-charger-215107:asia-south1:newdish123'放入主机中无效。

当我将公共ip地址放在CloudSQL提供的主机中,并将我的ip与GCP设置为授权ip时,sequelize可以正常运行并按预期执行操作。

2 个答案:

答案 0 :(得分:1)

将需要访问Cloud SQL的机器/网络的IP地址手动添加到“授权网络”部分。

还有

建立连接时检查您的代理

答案 1 :(得分:1)

我遇到了完全相同的问题,我的所有代码库都没有改变。我要解决的问题是创建一个新项目,然后在新项目中创建新的App Engine实例和新的Cloud SQL数据库。

然后我为该项目启用了SQL Admin,通过运行来创建新的配置文件

gcloud init

并为新项目创建新的配置文件。

然后我再次部署了该应用程序:

gcloud app deploy

您可以在这里找到我的项目的设置:

Node.JS on Google App Enging with Cloud SQLError: connect ENOENT /cloudsql/