【问题标题】:MongoDB atlas, connection not workingMongoDB地图集,连接不起作用
【发布时间】:2021-06-20 02:22:33
【问题描述】:

我刚刚创建了一个免费的 MongoDB atlas 集群实例。但不知何故,我无法从我的应用程序以及 MongoDB Compas 连接它。

当我尝试运行我的应用程序时出现以下错误。

Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches WritableServerSelector. Client view of cluster state is {type=UNKNOWN, servers=[{address=experimental-1-epdri.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: experimental-1-epdri.mongodb.net}, caused by {java.net.UnknownHostException: experimental-1-epdri.mongodb.net}}]
    at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:377) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:104) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.binding.ClusterBinding.getWriteConnectionSource(ClusterBinding.java:68) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:411) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.operation.CreateIndexesOperation.execute(CreateIndexesOperation.java:144) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.operation.CreateIndexesOperation.execute(CreateIndexesOperation.java:71) ~[mongodb-driver-core-3.4.2.jar:na]
    at com.mongodb.Mongo.execute(Mongo.java:845) ~[mongodb-driver-3.4.2.jar:na]
    at com.mongodb.Mongo$2.execute(Mongo.java:828) ~[mongodb-driver-3.4.2.jar:na]
    at com.mongodb.MongoCollectionImpl.createIndexes(MongoCollectionImpl.java:491) ~[mongodb-driver-3.4.2.jar:na]
    at com.mongodb.MongoCollectionImpl.createIndex(MongoCollectionImpl.java:458) ~[mongodb-driver-3.4.2.jar:na]
    at org.axonframework.mongo.eventsourcing.eventstore.AbstractMongoEventStorageStrategy.ensureIndexes(AbstractMongoEventStorageStrategy.java:201) ~[axon-mongo-3.0.5.jar:3.0.5]
    at org.axonframework.mongo.eventsourcing.eventstore.MongoEventStorageEngine.ensureIndexes(MongoEventStorageEngine.java:123) ~[axon-mongo-3.0.5.jar:3.0.5]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
    ... 76 common frames omitted


Process finished with exit code 1

在 Compas 上,它只是说 MongoDB 实例没有在这个地方运行。我检查了我的集群,如下所示。

但我仍然无法连接到 mongo 集群。此外,我还尝试了`Mongo CLI,发现错误如下所示。

以下是我从 MongoDB 地图集页面获取的连接字符串。

mongodb+srv://admin_eventdb:&lt;PASSWORD&gt;@experimental-1-epdri.mongodb.net/test?retryWrites=true

请帮忙解决这个问题。

【问题讨论】:

  • 你的MongoDB Compass是什么版本?
  • 我使用的是 1.14.6 版本的 Compass

标签: java mongodb


【解决方案1】:

请尝试:

Hostname: experimental-1-epdri.mongodb.net
SRV Record: checked
Authentication: Username / Password
Username: admin_eventdb
Password: <PASSWORD>
Authentication Database: admin
Replica Set Name:
Read Preference: Primary
SSL: System CA / Atlas Deployment
SSL Tunnel: None

【讨论】:

    【解决方案2】:

    我有同样的issue。通过使用 Java Driver 3.4 的连接字符串,它将是:

    mongodb://user:<PASSWORD>@cluster0-shard-00-00-ox90k.mongodb.net:27017,cluster0-shard-00-01-ox90k.mongodb.net:27017,cluster0-shard-00-02-ox90k.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true
    

    我写了自己的密码,而不是&lt;PASSWORD&gt;admin1是我的管理员用户。


    更新:如果你想使用驱动程序3.7+,你需要写而不是格式化连接(并避免我上面的问题)

    MongoClientURI uri = new MongoClientURI("mongodb+srv://admin:mypassword@cluster0-ox90k.mongodb.net/test?retryWrites=true");
    MongoClient mongoClient = new MongoClient(uri);
    

    另一个使用MongoClients.create()(as of the 3.7 release),的变体:

       MongoClient mongoClient = MongoClients.create("mongodb+srv://admin:mypassword@cluster0-ox90k.mongodb.net/test?retryWrites=true");
    

    注意:密码不要写成mongodb://user:&lt;mypassword&gt;@...,格式为mongodb://user:mypassword@...,不带大括号&lt;&gt;

    【讨论】:

      【解决方案3】:

      对于 Node.js:结帐Atlas MongoDB connection

      const mongoose = require('mongoose');
      const conStr = 'mongodb+srv://lord:<password>@cluster5-eeev8.mongodb.net/test?retryWrites=true&w=majority'
      
      const DB = conStr.replace(
        '<password>',
        myPass
      );
      
      const DB = conStr.replace(
        'test',
        myDatabaseName
      );
      //remember mongoose.connect() return promise
      mongoose
        .connect(DB, {
          usedNewUrlParser: true,
          useCreateIndex: true,
          useFindAndModify: false,
        })
        .then((con) => {
          console.log(con.connection);
          console.log('DB connection successful');
        });
      

      【讨论】:

        【解决方案4】:

        刚刚尝试使用 Atlas。这是适用于 Spring Boot 2.3.1.RELEASE 的配置

        spring:
          data:
            mongodb:
              database: sample_training 
              uri: mongodb+srv://<user>:<pass>@cluster0-hosturl.aws|gcp.mongodb.net/?retryWrites=true&w=majority
        

        【讨论】:

          猜你喜欢
          • 2020-11-12
          • 2019-07-09
          • 2023-03-03
          • 2019-08-11
          • 2020-06-05
          • 1970-01-01
          • 2014-06-17
          • 1970-01-01
          相关资源
          最近更新 更多