无法从 App Engine flex Java 上的其他项目连接到 Cloud SQL



下面是抛出的异常:

javax.servlet.ServletException: javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

我稍后也会在堆栈跟踪中收到此消息:

Caused by: java.lang.RuntimeException: The Google Cloud SQL API is not enabled for project [xxxxxx]. Please use the Google Developers Console to enable it: https://console.cloud.google.com/apis/api/sqladmin/overview?project=xxxxxx

当我单击控制台链接时,我可以看到云 SQL API 已启用,并且当数据库位于同一项目上时,代码运行良好。我还添加了 AppEngine 灵活服务帐户,该帐户在包含具有角色Cloud SQL Client的云 SQL 数据库的项目中具有App Engine flexible environment Service Agent角色。

接下来我应该尝试什么?谢谢

更新

绒球.xml:

--update2 不再需要该文件 --

访问其他项目中的云 SQL 实例时,请务必在源项目中启用云 SQL 管理员 API。复制错误消息中的链接,并将项目 ID 替换为其他项目 ID。当前消息具有误导性,因为它当前假定实例位于同一项目中。

项目间云SQL通信需要两件事:

  • 包含云 SQL 实例的项目必须启用云 SQL 管理员 API
  • 想要访问它的项目必须在包含云 SQL 实例(源(的项目上具有适当的云 SQL IAM 角色:

不同项目中的 App Engine 和 Cloud SQL

对于不同项目中的 App Engine 应用程序和云 SQL 实例,您必须授予默认的应用程序引擎服务账户 ([PROJECT-ID]@appspot.gserviceaccount.com)以下 IAM 角色之一:

  • 云 SQL 客户端
  • 云 SQL 编辑器
  • 云 SQL 管理员

相关内容

  • 没有找到相关文章

最新更新