下面是抛出的异常:
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 管理员