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



我遵循了有关如何设置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实例相同的区域。 "

相关内容

  • 没有找到相关文章

最新更新