从Node.JS连接到Google Cloud SQL的正确方法

我遵循了关于如何设置Node.JS来使用Cloud SQL的示例,并且通常可以使用它,但是有关如何连接到SQL Server的一些解决方法。 我无法以正确的方式将INSTANCE_CONNECTION_NAME传递给createConnection()方法的optionsvariables的socketPath选项。 相反,作为临时的解决方法,我目前指定服务器的IP地址,并将我的虚拟机IP地址放入服务器的防火墙设置中,以便让其通过。

这一切工作,但我现在试图把它发布到AppEngine之前正确地放在一起。

我怎样才能使它工作?

下面的代码工作正常:

 function getConnection () { const options = { host: "111.11.11.11", //IP address of my Cloud SQL Server user: 'root', password: 'somePassword', database: 'DatabaseName' }; return mysql.createConnection(options); } 

但是下面的代码,我从教程和教程中提到的Github页面合并,给出了错误:

 function getConnection () { const options = { user: 'root', password: 'somePassword', database: 'DatabaseName', socketPath: '/cloudsql/project-name-123456:europe-west1:sql-instance-name' }; return mysql.createConnection(options); } 

这是我得到的错误:

 { [Error: connect ENOENT /cloudsql/project-name-123456:europe-west1:sql-instance-name] code: 'ENOENT', errno: 'ENOENT', syscall: 'connect', address: 'cloudsql/project-name-123456:europe-west1:sql-instance-name', fatal: true } 

我究竟做错了什么? 我担心的是,如果我使用IP地址将应用程序发布到AppEngine,我将无法允许传入的stream量进入SQL服务器?

我在testing'coud sql'时遇到了类似的错误。

  • 错误消息:错误:连接ENOENT / cloudsql / xxx-proj:us-central1:xxx-instance
  • scheme:

+ ————————————————- ——— +
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
chmod + x cloud_sql_proxy
sudo mkdir / cloudsql; sudo chmod 777 / cloudsql
./cloud_sql_proxy -dir = / cloudsql&

=> now node js server can connect to mysql

请参阅指南: https : //cloud.google.com/appengine/docs/flexible/nodejs/using-cloud-sql

您是否将AppEngine应用程序部署到与SQL数据库相同的区域? (欧洲-west1)

https://cloud.google.com/sql/docs/mysql/connect-app-engine上的文档声明“ 您的应用程序必须与Cloud SQL实例位于同一个区域中 ”。