我遵循了有关如何设置node.js与Cloud SQL一起工作的示例,并且通常可以使其工作,但是有一些有关如何连接到SQL Server的解决方法。我无法以将INSTANCE_CONNECTION_NAME
的正确方式连接到createConnection()
方法的options
变量的socketPath
选项。取而代之的是,作为临时解决方法,我目前指定了服务器的IP地址,并将我的VM 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,我将无法允许进入SQL Server的流量?
我在测试'coud sql'。
时遇到了类似的错误
- 错误消息:错误:连接enoent/cloudsql/xxx-proj:us-central1:xxx-instance
- 解决方案:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
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
您是否将附录应用程序部署到与SQL数据库同一区域?(欧洲 - 西1)
https://cloud.google.com/sql/docs/mysql/connect-app-engine state的文档" 您的应用程序必须与云SQL实例相同的区域。 "