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

VS_*_*_FF 8 google-app-engine node.js google-cloud-sql google-cloud-platform

我按照有关如何设置 Node.JS 以与 Cloud SQL 一起使用的示例进行操作,并且通常可以使其正常工作,但有一些关于如何连接到 SQL 服务器的变通方法。我无法以正确的方式连接,将 传递INSTANCE_CONNECTION_NAME给方法socketPathoptions变量选项createConnection()。相反,作为临时解决方法,我目前指定服务器的 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);
}
Run Code Online (Sandbox Code Playgroud)

但是我从教程教程中引用的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);
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

{ [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 }
Run Code Online (Sandbox Code Playgroud)

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

Gar*_*ary 1

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

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