【发布时间】:2021-05-04 15:09:33
【问题描述】:
我有一个 jhipster 生成的 Spring Boot + mongo 项目,该项目在本地部署成功,但使用 ObjectRocket 插件部署到 Heroku 失败并出现此错误:
[org.springframework.data.mongodb.core.MongoTemplate]: Factory method 'mongoTemplate' threw exception;
nested exception is org.springframework.dao.DataAccessResourceFailureException: Timed out after 30000 ms while waiting for a server that matches
com.mongodb.client.internal.MongoClientDelegate$1@4339e0de. Client view of cluster state is {type=REPLICA_SET, servers=[];
nested exception is com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches com.mongodb.client.internal.MongoClientDelegate$1@4339e0de.
Client view of cluster state is {type=REPLICA_SET, servers=[]
我相信我的配置变量和我的 MONGODB_URI 变量是正确的,因为在 shell 中,我已经成功地使用来自配置变量的相同连接字符串连接到我的 mongo 数据库。此连接字符串存储在MONGODB_URI 中,格式为mongodb://<USERNAME>:<PASSWORD@<host1>:<port1>,<host2>:<port2>,<host3>:<port3>/<DATABASE_NAME>?replicaSet=<replicaSetID>。这也意味着我已经在 ObjectRocket 端设置了我的 mongodb 数据库名、用户和密码。
我的 procfile 有 --spring.data.mongodb.database=$(echo "$MONGODB_URI" | sed "s/^.*:[0-9]*\///g") 引用 MONGODB_URI 的行。我的application-prod.yml 配置文件有以下条目:
spring:
data:
mongodb:
uri: ${MONGODB_URI}?authMode=scram-sha1
由于与我的 mongo 数据库实例的连接失败,我没有成功部署。任何帮助将不胜感激。
此 pastebin 粘贴处的堆栈跟踪中包含更多上下文的错误:https://pastebin.com/wNd3TxUL
【问题讨论】:
标签: mongodb spring-boot heroku production