首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云运行+云SQL (mysql)

云运行+云SQL (mysql)
EN

Stack Overflow用户
提问于 2022-05-23 20:22:58
回答 1查看 314关注 0票数 2

我在云上运行普通SpringBoot2.6.5java应用程序,该期刊在连接DB方面有问题--通常几天后

我使用spring gcp-starter sql-mysql连接到DB。MySQL有私有IP --使用无服务器的VCP连接到它.

我把这个问题与维护窗口/备份窗口联系起来--但是这个问题在几个小时后并没有消失--重新部署云运行是唯一的帮助--而且在接下来的几天里它会有帮助.

堆叠痕迹:

代码语言:javascript
复制
java.sql.SQLNonTransientConnectionException: Could not create connection to database server.

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException ( com/mysql.cj.jdbc.exceptions/SQLError.java:110 )
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException ( com/mysql.cj.jdbc.exceptions/SQLError.java:97 )
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException ( com/mysql.cj.jdbc.exceptions/SQLError.java:89 )
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException ( com/mysql.cj.jdbc.exceptions/SQLError.java:63 )
at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly ( com/mysql.cj.jdbc/ConnectionImpl.java:1002 )
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO ( com/mysql.cj.jdbc/ConnectionImpl.java:819 )
at com.mysql.cj.jdbc.ConnectionImpl.<init> ( com/mysql.cj.jdbc/ConnectionImpl.java:449 )
at com.mysql.cj.jdbc.ConnectionImpl.getInstance ( com/mysql.cj.jdbc/ConnectionImpl.java:242 )
at com.mysql.cj.jdbc.NonRegisteringDriver.connect ( com/mysql.cj.jdbc/NonRegisteringDriver.java:198 )
at com.zaxxer.hikari.util.DriverDataSource.getConnection ( com/zaxxer.hikari.util/DriverDataSource.java:138 )
at com.zaxxer.hikari.pool.PoolBase.newConnection ( com/zaxxer.hikari.pool/PoolBase.java:364 )
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry ( com/zaxxer.hikari.pool/PoolBase.java:206 )
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry ( com/zaxxer.hikari.pool/HikariPool.java:476 )
at com.zaxxer.hikari.pool.HikariPool.access$100 ( com/zaxxer.hikari.pool/HikariPool.java:71 )
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call ( com/zaxxer.hikari.pool/HikariPool.java:726 )
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call ( com/zaxxer.hikari.pool/HikariPool.java:712 )
at java.util.concurrent.FutureTask.run ( java/util.concurrent/FutureTask.java:264 )
at java.util.concurrent.ThreadPoolExecutor.runWorker ( java/util.concurrent/ThreadPoolExecutor.java:1128 )
at java.util.concurrent.ThreadPoolExecutor$Worker.run ( java/util.concurrent/ThreadPoolExecutor.java:628 )
at java.lang.Thread.run ( java/lang/Thread.java:829 )
Caused by: java.lang.RuntimeException

at com.google.cloud.sql.core.CloudSqlInstance.addExceptionContext ( CloudSqlInstance.java:574 )
at com.google.cloud.sql.core.CloudSqlInstance.fetchEphemeralCertificate ( CloudSqlInstance.java:515 )
at com.google.cloud.sql.core.CloudSqlInstance.lambda$performRefresh$0 ( CloudSqlInstance.java:330 )
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly ( TrustedListenableFutureTask.java:125 )
at com.google.common.util.concurrent.InterruptibleTask.run ( InterruptibleTask.java:69 )
at com.google.common.util.concurrent.TrustedListenableFutureTask.run ( TrustedListenableFutureTask.java:78 )
at java.util.concurrent.Executors$RunnableAdapter.call ( Executors.java:515 )
at java.util.concurrent.FutureTask.run ( FutureTask.java:264 )
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run ( ScheduledThreadPoolExecutor.java:304 )
EN

回答 1

Stack Overflow用户

发布于 2022-05-26 01:51:30

我成功地复制了您的问题,并遇到了您提供的相同的堆栈跟踪。我使用了这个spring-cloud-gcp github链接,并通过编辑spring-cloud-gcp/spring-cloud-gcp-samples/spring-cloud-gcp-sql-mysql-sample/文件夹下的application.properties修复了堆栈跟踪错误。

这是我遵循的格式:

代码语言:javascript
复制
spring.cloud.gcp.sql.database-name=<database-name>
spring.cloud.gcp.sql.instance-connection-name=<project-id>:<region>:<instance-id>

# So app starts despite "table already exists" errors.
spring.datasource.continue-on-error=true
# Enforces database initialization
spring.datasource.initialization-mode=always

# Leave empty for root, uncomment and fill out if you specified a user
#spring.datasource.username=

# Uncomment if root password is specified
spring.datasource.password=<password> # Uncomment this if you add a password for 
your instance-id

spring.cloud.gcp.project-id=<project-id>
#spring.cloud.gcp.credentials.location=file:/path/to/service-account.json

请确保避免对值使用引号,因为这将导致相同的堆栈跟踪错误。只需按原样键入值即可。

如果不使用Cloud,则需要从Google控制台创建服务帐户并下载其私钥。然后,取消对spring.cloud.gcp.sql.credentials.location属性在application.properties文件中的注释,并将其值填充到本地文件系统上的服务帐户私钥的路径中,并加上file:

如果你有问题或澄清,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72354448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档