代码之家  ›  专栏  ›  技术社区  ›  Mehdi Benmoha

无法从App Engine flex Java上的不同项目连接到云SQL

  •  0
  • Mehdi Benmoha  · 技术社区  · 6 年前

    下面是引发的异常:

    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

    当我单击console链接时,我可以看到cloudsqlapi已经启用,并且当数据库在同一个项目上时,代码工作得非常好。我还添加了AppEngine flexible服务帐户 App Engine flexible environment Service Agent 包含具有以下角色的云SQL数据库的项目中的角色 Cloud SQL Client .

    我下一步该怎么做?谢谢

    更新

    pom.xml文件:

    1 回复  |  直到 6 年前
        1
  •  1
  •   Vadim    6 年前

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

        2
  •  0
  •   seb    5 年前

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

    • 要访问它的项目必须在包含云SQL实例的项目上具有适当的云SQL IAM角色( source

    不同项目中的appengine和cloudsql

    对于不同项目中的App Engine应用程序和云SQL实例,必须授予默认appengine服务帐户( [PROJECT-ID]@appspot.gserviceaccount.com)

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