尝试将部署在App Engine标准环境中的Spring Boot应用程序与云MySql连接会引发以下错误。
GCLOUD:java.sql.SQLNonTransientConnectionException:无法连接到本地主机上的MySQL服务器:3,306。GCLOUD:确保您要连接的机器/端口上有一个MySQL服务器正在运行,并且该软件正在其上运行的计算机能够连接到该主机/端口(即没有防火墙)。另外,请确保尚未使用--skip-networking标志启动服务器。
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'角色和在应用程序引擎中进行的其他设置,如建议的here。我想念什么吗?
我遇到了同样的事情,(后来又头疼了)遇到了一个对我有用的解决方案。归结为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