【问题标题】:Unable to insert documents using monger无法使用 monger 插入文档
【发布时间】:2020-02-01 13:25:31
【问题描述】:

我有以下代码打算将文档插入到 mongodb 数据库的本地实例中:

(let [conn (mg/connect)
      db   (mg/get-db conn "monger-test")]
  (pprint (mc/insert-and-return db "documents" {:name "John" :age 30}))

  )

但是在运行时,我收到以下错误:

INFO: Cluster created with settings {hosts=[127.0.0.1:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Feb 01, 2020 8:20:34 AM com.mongodb.diagnostics.logging.JULLogger log
INFO: Exception in monitor thread while connecting to server 127.0.0.1:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:116)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
    at java.base/java.net.Socket.connect(Socket.java:591)
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:50)
    at com.mongodb.connection.SocketStream.open(SocketStream.java:58)
    ... 3 more

Feb 01, 2020 8:20:34 AM com.mongodb.diagnostics.logging.JULLogger log
INFO: No server chosen by WritableServerSelector from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]}. Waiting for 30000 ms before timing out
:error-while-loading server.core

Error refreshing environment: Syntax error compiling at (server/core.clj:29:1). 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=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]
Finished at 08:21:04.671 (run time: 30.322s)

我该如何解决这个问题?

【问题讨论】:

  • 相关错误似乎是java.net.ConnectException: Connection refused (Connection refused)。你有在127.0.0.1 上运行的 MongoDB 进程吗?尝试连接mongo shell 以确认。

标签: java mongodb clojure


【解决方案1】:

您的本地 mongo 似乎已损坏,这发生在我身上,我什至无法从控制台登录 mongo。尝试从您的终端登录到 mongo,如果该操作也返回该错误,您必须卸载您的 mongodb 实例并再次从零安装它。

【讨论】:

  • 该错误仅表明无法使用提供的连接字符串连接到 MongoDB。重新安装 MongoDB 将是一个极端(且不必要)的解决方案。更有可能是 MongoDB 实例没有运行,或者运行在不同的 IP/端口组合上。
【解决方案2】:

您必须确保您的 mongo shell 服务已启动并正在运行:

brew services list

您应该能够看到mongodb-community 状态为started

参考:Read-only file system when attempting mkdir /data/db on Mac

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2023-03-05
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多