当前位置: 首页 > 知识库问答 >
问题:

NodeJs:无法从Google App Engine连接Google CloudSQL

徐子石
2023-03-14

我一直在研究App Engine和Cloud SQL。

最近我禁用了数据库的公共访问。此后,我无法使用我的应用引擎连接到CloudSQL(应用引擎和CloudSQL都在同一个Google云项目中)。

我能够连接的唯一方式是在CloudSQL上将应用引擎IP列入白名单。但在新的部署中,IP会发生变化,因此添加静态IP并不是理想的解决方案。

在云SQL连接选项卡中,它显示以下内容:

应用引擎授权< br>
默认情况下,此项目中的所有应用都获得授权。若要授权其他项目中的应用程序,请按照以下步骤操作。

此项目中的应用程序:全部授权。在这种情况下不是这样。

云SQL API和云SQL管理API已启用。

已经用谷歌搜索了问题,并按照文档和其他堆栈溢出问题中的步骤进行操作:

1) 无法从我的应用程序引擎访问Google Cloud SQL数据库
2)节点JS Mysql协议致命错误后的ENQUEUE
3)节点Mysql中的“PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR”
4)错误:Mysql节点出现致命错误后无法将查询排队
5)无法从Google应用程序引擎连接Google CloudSQL

所有这些都没有太大帮助。

connection = mysql.createConnection({
  host     : 'INSTANCE_CONNECTION_NAME',
  user     : 'db_user',
  password : 'db_password',
  database : 'db_name'
});

预期:获取连接。
实际: getaddrinfo ENOTFOUND INSTANCE_CONNECTION_NAME INSTANCE_CONNECTION_NAME:3306

不知道为什么它两次使用< code > INSTANCE _ CONNECTION _ NAME 。

共有2个答案

淳于思淼
2023-03-14

我试图复制您的用例场景,以下步骤对我有效。您的云SQL实例没有公共IP,那么要从App Engine连接到它,您需要为这两个服务使用相同的VPN网络。因此,您必须编辑您的云SQL实例以指示您将使用的网络,并编辑app.yaml配置文件。同样重要的是,这两个服务将在同一区域运行。

app.yaml配置文件中,您必须添加以下标签:

network:
    name: [YOUR_NETWORK_NAME]
    subnetwork_name: [YOUR_SUBNETWORK_NAME]

并使用数据库环境变量:

env_variables:
  SQL_USER: [YOUR_USER]
  SQL_PASSWORD: [YOUR_PASSWORD]
  SQL_DATABASE: [YOUR_DATABASE-NAME]
  # e.g. my-awesome-project:us-central1:my-cloud-sql-instance
  INSTANCE_CONNECTION_NAME:<INSTANCE_CONNECTION_NAME>
# [END gae_flex_mysql_env]

结尾的这几行:

beta_settings:
  cloud_sql_instances: <INSTANCE_CONNECTION_NAME>

请记住,您必须替换”

有关更多信息,您可以查看此文档从应用程序引擎连接。

范修伟
2023-03-14

让我说明我是否理解您的问题。

您拥有公共 IP,但已使其仅可供项目中的应用程序访问。如果是这种情况,并且鉴于您使用的是灵活的环境,我发现以下方法很有帮助

1)建立连接时,将主机称为< code>172.17.0.6

2) 在应用程序中。yaml指定实例概述页面中提到的INSTANCE_CONNECTION_NAME。

3) 部署并运行。

这将在使用Docker构建灵活NodeJs环境时工作。使用的默认数据库容器位于172.17.0.6,此处访问实例连接名称,并在App EngineCloudSQL DB之间建立连接。

 类似资料:
  • 这是我的server.js文件 .env文件 我得到这个错误 (节点:16036)UnhandledPromiserEjectionWarning:错误:QueryReqWrap.OnResolve[as oncomplete](dns.js:203:19)处的queryTxt timeout data.ztmkm.MongoDB.NET(使用显示警告是在何处创建的)(节点:16036)Unhan

  • 我正在nodejs上使用node-ssh模块。当我启动到ssh的连接时,它给出了错误。我也在使用WSL Ubuntu 18。我有docker compose文件。我在

  • 我无法从我的NodeJS应用程序连接到Elasticsearch docker服务器。 这是我的docker-compose文件: 有弹力的js index.js连接: 我有一个dockerize的应用程序(NodeJS和Elasticsearch-v7.9.3)。服务器可以很好地启动,但当我尝试在Elasticsearch中创建客户端实例时,它向我显示了一个错误: Elasticsearch和K

  • 这是我的实体 这是我的主课 这就是我的persistence.xml 堆栈跟踪:

  • 我试图从Windows运行一个HBase Java客户端程序。我所拥有的只有1)一个没有任何编译器错误的Java程序2)hbase-site.xml(我没有其他HDFS或HBase配置文件。只有上面的一个。)当我运行程序时,我得到了以下错误--在最后一个块中给出的。我错过了什么吗?我在这里都给出了。

  • 问题内容: 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 Docker-machine正常运行,并且能够通过docker-machine ssh连接。 但是无法从docker-compose连接。 无法通过http + unix://var/run/docker.sock连接到Docker守护程序-它正在运行吗? 如果它