我已经从事App Engine和Cloud SQL已有一段时间了。
最近,我在数据库上禁用了公共访问权限。从那时起,我无法使用我的App Engine连接到CloudSQL(App Engine和Cloud SQL都在同一Google Cloud Project中)。
我能够连接的唯一方法是在CloudSQL上将App Engine IP列入白名单时。但是在新的部署中,IP发生了变化,因此添加静态IP并不是解决此问题的理想方法。
在“ Cloud SQL连接”选项卡中,它显示以下内容:
App Engine授权
默认情况下,此项目中的所有应用程序都经过授权。要授权其他项目中的应用,请按照以下步骤操作。此项目中的应用:所有已授权。在这种情况下不正确。
启用了Cloud SQL API和Cloud SQL Admin API。
搜索了这些问题,并按照文档和其他stackoverflow问题中的步骤进行操作:
1)无法从我的App Engine访问Google Cloud SQL数据库
2)Node JS Mysql PROTOCOL致命错误后排队
3)Node- MySqL中的“ PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR”
4)错误:致命错误在MySQL节点
5)无法连接后无法入队查询来自Google App Engine的Google Cloud sql
所有这些都没有太大帮助。
连接= 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
两次。
让我说一下,如果我了解您的问题。
您拥有公共IP,但仅使项目中的应用程序可以访问它。如果是这种情况,并且考虑到您使用的是灵活环境,我发现以下方法会有所帮助
1)建立连接时,请提及主机为 172.17.0.6
2)并在app.yaml中,指定“实例概述”页面中提到的INSTANCE_CONNECTION_NAME。
3)部署并运行。
这将与使用Docker构建的Flexible NodeJs环境一起使用。而且使用的默认数据库容器是172.17.0.6
,该实例连接名访问这里并之间建立连接App Engine
和CloudSQL DB
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句