【发布时间】:2020-02-18 23:02:13
【问题描述】:
我尝试将闪亮的应用程序连接到 mongodb 服务器。 我在 shinyapps.io 上部署了应用程序,但一次又一次地出错:
2019-10-22T18:14:14.694520+00:00 shinyapps[1117463]: Listening on http://127.0.0.1:36739
2019-10-22T18:14:36.665309+00:00 shinyapps[1117463]: Warning: Error in : No suitable servers found (`serverSelectionTryOnce` set): [socket timeout calling ismaster on 'seaport-shard-00-01-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-02-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-00-rysq4.gcp.mongodb.net:27017']
2019-10-22T18:14:36.670320+00:00 shinyapps[1117463]: 61: mongo_collection_command_simple
2019-10-22T18:14:36.670321+00:00 shinyapps[1117463]: 60: mongo
2019-10-22T18:14:36.670322+00:00 shinyapps[1117463]: 59: server [/srv/connect/apps/Seaport/app.R#223]
2019-10-22T18:14:36.670413+00:00 shinyapps[1117463]: Error : No suitable servers found (`serverSelectionTryOnce` set): [socket timeout calling ismaster on 'seaport-shard-00-01-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-02-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-00-rysq4.gcp.mongodb.net:27017']
更有趣的是,这个应用程序在我的 PC 上本地运行良好,而且过去 2 周在闪亮应用程序上运行良好。
我尝试使用标准连接字符串部署应用程序:
Data <- mongo(collection = 'Data',
db = 'MaterialSeaport',
url = 'mongodb+srv://<USER>:<PASSWORD>@seaport-rysq4.gcp.mongodb.net/test?retryWrites=true&w=majority')
添加 scram sha 选项:
Data <- mongo(collection = 'Data',
db = 'MaterialSeaport',
url = 'mongodb+srv://<USER>:<PASSWORD>@seaport-rysq4.gcp.mongodb.net/test?retryWrites=true&w=majority&authMechanism=SCRAM-SHA-1')
并且使用旧的连接字符串:
Data <- mongo(collection = 'Data',
db = 'MaterialSeaport',
url = 'mongodb://<USER>:<PASSWORD>@seaport-shard-00-00-rysq4.gcp.mongodb.net:27017,seaport-shard-00-01-rysq4.gcp.mongodb.net:27017,seaport-shard-00-02-rysq4.gcp.mongodb.net:27017/test?ssl=true&replicaSet=Seaport-shard-0&authSource=admin&retryWrites=true&w=majority')
如何在不出现此错误的情况下将我的应用程序与 mongodb 连接?
【问题讨论】:
-
我认为 shinyapps 有问题
-
您解决了吗?托管从 docker 容器调用 Atlas 的应用程序时遇到类似问题。
-
检查你的mongolite版本!在将我的 Dockerfile 中的 mongolite 版本从 1.5 升级到 2.2.0 之前,我尝试了 SO 和 Github 中的几乎所有内容...显然旧版本的 mongolite 难以连接到 Atlas 上的 Mongo 集群。
标签: r mongodb shiny shinyapps mongolite