试图将部署在应用程序引擎标准环境中的spring-boot应用程序与云MySql连接,会引发以下错误。
GCLOUD:java.sql.SQLNonTransientConnectionException:无法连接到localhost:3306上的MySQL服务器。GCLOUD:确保在您尝试连接的机器/端口上运行MySQL服务器,并且运行该软件的机器能够连接到此主机/端口(即未防火墙(。还要确保服务器没有使用--skip网络标志启动。
config.setDriverClassName("com.mysql.cj.jdbc.Driver");
config.setJdbcUrl(String.format("jdbc:mysql:///%s", DB_NAME));
config.setUsername(USER_NAME);
config.setPassword(USER_PW);
config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.socket.factory.connector.j.8");
String CLOUD_SQL_CONNECTION_NAME = "PROJECTID:REGION:DB_INSTANCE";
config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_CONNECTION_NAME);
此处建议在应用程序引擎中设置"IAM"角色和其他设置。我是不是错过了什么?
我遇到了同样的事情,(后来遇到了一些令人头疼的问题(找到了一个适合我的解决方案。它归结为pom.xml(对于maven(中声明的依赖关系。
我使用的是:
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.22.0</version>
</dependency>
我想我是从其他教程中得到的。
相反,用以下内容替换它解决了问题:
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>mysql-socket-factory</artifactId>
<version>1.0.16</version>
</dependency>
我通过一个教程视频发现了这一点(本身就很有帮助(:https://www.youtube.com/watch?v=mAhah-vq0Iw