【问题标题】:com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting to connectcom.mongodb.MongoTimeoutException:等待连接时超时 10000 毫秒
【发布时间】:2016-07-18 09:16:49
【问题描述】:

我以为这个问题被问了好几次,但我不得不再问一遍。因为为这个问题提供的解决方案并没有给我一个确切的答案来摆脱这个该死的错误。

当我尝试将文档插入数据库时​​,我使用 mongo-java-driver-2.12.4mongo.jar 出现以下错误。任何帮助表示赞赏。

错误:

Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting to connect. Client view of cluster state is {type=Unknown, servers=[{address=127.0.0.1:27000, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused: connect}}, {address=127.0.0.1:27001, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused: connect}}, {address=127.0.0.1:27002, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused: connect}}]
    at com.mongodb.BaseCluster.getDescription(BaseCluster.java:128)

代码:

    public class MongoDbConnectDatabase {

    public static void main(String[] args) {

        // To connect to mongodb server
        try {

             List<ServerAddress> lstServer = new ArrayList<ServerAddress>();
             lstServer.add(new ServerAddress("127.0.0.1", 27000));
             lstServer.add(new ServerAddress("127.0.0.1", 27002));
             lstServer.add(new ServerAddress("127.0.0.1", 27001));
             MongoClient  mongoClient = new MongoClient(lstServer);

            // Now connect to your database
            DB db = mongoClient.getDB("test");
            System.out.println("connect to database successfully");

            DBCollection coll = db.createCollection("mycol", null);
            System.out.println("Collection created successfully");

            DBCollection colReceived= db.getCollection("mycol");
            System.out.println("Collection mycol selected successfully");

            BasicDBObject doc = new BasicDBObject("title", "MongoDB").
                    append("description", "database").
                    append("likes", 100).
                    append("url", "http://www.tutorialspoint.com/mongodb/").
                    append("by", "tutorials point");

            colReceived.insert(doc);
                 System.out.println("Document inserted successfully");

        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

    }

}

【问题讨论】:

  • 什么都不做,重启机器,为我重启工作

标签: java mongodb jakarta-ee database nosql


【解决方案1】:

您收到拒绝连接。你确定 mongod 正在运行吗?

尝试连接mongoclient:

mongo 127.0.0.1:27000/test

这适用于所有三个实例(27000、27002、27001)。

如果您对 mongoclient 也有问题,请检查您的日志。

【讨论】:

    【解决方案2】:

    此错误的另一个原因可能是 mongo-java-driver 的版本与您的 mongo 应用程序不兼容。我的情况:我使用 mongo-java-driver 版本 2.12.3 和 mongo 3.0.8 -> 不起作用。 (https://docs.mongodb.com/ecosystem/drivers/driver-compatibility-reference/#reference-compatibility-mongodb-java)

    【讨论】:

      【解决方案3】:

      Here 列出了此错误的所有可能原因。在我的情况下,这是由于副本集未初始化。使用rs.initiate() 初始化副本集。 在我的例子中,我使用了从生产数据创建的卷并将其用于分段。由于local db 具有旧的副本集配置,因此它无法成为 PRIMARY。我做了以下事情使它成为主要的:

      >use local
      > db.dropDatabase();
      { "dropped" : "local", "ok" : 1 }
      > rs.initiate()
      >myrepl:PRMIARY
      

      现在客户端可以连接并执行读/写操作了。

      【讨论】:

        【解决方案4】:

        给出一个可能给出基本想法的sn-p。

        package com.mkyong.core;
        
        
        import java.net.UnknownHostException;
        
        import com.mongodb.BasicDBObject;
        import com.mongodb.DB;
        import com.mongodb.DBCollection;
        import com.mongodb.DBCursor;
        import com.mongodb.MongoClient;
        
        
        public class MongoTest {
            static DBCollection table;
            public static void main(String[] args) {
                MongoClient mongo = null;
                try {
                    mongo = new MongoClient("localhost", 27017);
                } catch (UnknownHostException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        
                DB db = mongo.getDB("lending");
        
                 table = db.getCollection("bureaudata");
            
                    
                /**** Find and display ****/
                BasicDBObject searchQuery = new BasicDBObject();
                searchQuery.put("id", "63057298");
        
                DBCursor cursor = table.find(searchQuery);
        
                while (cursor.hasNext()) {
                    System.out.println(cursor.next());
                }
        
            }
        }
                    
        

        【讨论】:

          猜你喜欢
          • 2015-01-05
          • 2019-09-16
          • 2016-02-17
          • 2020-10-16
          • 2016-08-11
          • 1970-01-01
          • 1970-01-01
          • 2014-05-10
          • 2015-11-03
          相关资源
          最近更新 更多