【发布时间】:2019-11-27 12:05:08
【问题描述】:
我从事 App Engine 和 Cloud SQL 已经有一段时间了。
最近我在我的数据库上禁用了公共访问权限。从那以后,我无法使用我的 App Engine 连接到 CloudSQL(App Engine 和 Cloud SQL 都在同一个 Google Cloud 项目中)。
我能够连接的唯一方法是在 CloudSQL 上将 App Engine IP 列入白名单。但是在新的部署中,IP 会发生变化,因此添加静态 IP 并不是一个理想的答案。
在 Cloud SQL 连接选项卡中显示以下内容:
App Engine 授权
默认情况下,此项目中的所有应用都已获得授权。要授权其他项目中的应用,请按照以下步骤操作。此项目中的应用:所有已授权。 在这种情况下这是不正确的。
已启用 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
所有这些都没有太大帮助。
连接 = mysql.createConnection({ 主机:'INSTANCE_CONNECTION_NAME', 用户:'db_user', 密码:'db_password', 数据库:'db_name' });预期: Get a Connection.
实际: getaddrinfo ENOTFOUND INSTANCE_CONNECTION_NAME INSTANCE_CONNECTION_NAME:3306
不知道为什么它需要INSTANCE_CONNECTION_NAME 两次。
【问题讨论】:
-
使用 Google Cloud SQL 代理。 cloud.google.com/sql/docs/mysql/connect-app-engine
-
按照链接中的步骤操作。还是同样的问题。同样的错误
-
错误是什么?
-
getaddrinfo ENOTFOUND INSTANCE_CONNECTION_NAME INSTANCE_CONNECTION_NAME:3306这是错误。
标签: mysql node.js google-app-engine google-cloud-platform google-cloud-sql