1

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

这一切都有效,但我现在试图在发布到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); 
} 

但下面的代码,我从TutorialGithub page,这是在教程提到,结合是给错误:

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服务器?

回答

1

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

文档在https://cloud.google.com/sql/docs/mysql/connect-app-engine状态“您的应用程序必须在同一个区域作为您的Cloud SQL实例。

+0

好一点,是的,看起来它正好是在欧洲West1-C ,即使我没有想过它...... –

+0

正确答案? – Gary

+0

还不知道。作为解决方法,在Compute Engine上结束运行... –

2

在测试“coud的sql”我遇到了类似的错误。

  • error message : Error: connect 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

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

+0

感谢您的建议。我们会很快尝试... –

相关问题