gpt4 book ai didi

mysql - Node :Unable to connect Google Cloud SQL from Google App Engine

转载 作者:行者123 更新时间:2023-11-29 05:48:34 31 4
gpt4 key购买 nike

我从事 App Engine 和 Cloud SQL 已有一段时间了。

最近我在我的数据库上禁用了公共(public)访问。从那时起,我就无法使用我的 App Engine 连接到 CloudSQL(App Engine 和 Cloud SQL 都在同一个 Google Cloud 项目中)。

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

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

App Engine authorization

All apps in this project are authorized by default. To authorize apps in other projects, follow the steps below.

Apps in this project: All authorized. Which is not true in this case.

Cloud SQL API 和 Cloud SQL Admin API 已启用。

用谷歌搜索问题并按照文档和其他 stackoverflow 问题中的步骤进行操作:

1) Cannot access Google Cloud SQL database from my App Engine
2) Node JS Mysql PROTOCOL ENQUEUE AFTER FATAL ERROR
3) "PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR" in Node-MySqL
4) Error: Cannot enqueue Query after fatal error in mysql node
5) not able to connect google cloud sql from google app engine

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

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

不确定为什么需要 INSTANCE_CONNECTION_NAME 两次。

最佳答案

如果我理解您的问题,请告诉我。

您拥有公共(public) IP,但已将其设置为仅供项目中的应用程序访问。如果是这种情况,并且考虑到您使用的是灵活的环境,我发现以下方法很有用

1) 建立连接时,将 Host 指定为 172.17.0.6

2) 并在 app.yaml 中指定 INSTANCE_CONNECTION_NAME,如您的实例概述页面中所述。

3) 部署并运行。

这将起作用,因为 Flexible NodeJs 环境是使用 Docker 构建的。并且使用的默认数据库容器位于 172.17.0.6,在这里访问实例连接名称并在 App EngineCloudSQL DB 之间建立连接>。

关于mysql - Node :Unable to connect Google Cloud SQL from Google App Engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57096451/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com