Play 2.3.5和ReactiveMongo:MongoError ['没有可用的主节点!']

8

我最近升级了Play到2.3.5版本并尝试与ReactiveMongo一起使用。然而,每次我尝试从mongoDB读取数据时都会出现异常。这是我的build.sbt文件:

name := """ReactiveMongoRestExample"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  jdbc,
  anorm,
  cache,
  ws,
    "org.reactivemongo" %% "play2-reactivemongo" % "0.10.5.0.akka23"
)

以下是堆栈跟踪信息:

play.api.Application$$anon$1: 执行异常[[PrimaryUnavailableException$: MongoError['No primary node is available!']]] at play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.5.jar:2.3.5] at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.5.jar:2.3.5] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) [play_2.11-2.3.5.jar:2.3.5] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) [play_2.11-2.3.5.jar:2.3.5] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) [scala-library-2.11.2.jar:na] Caused by: reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$: MongoError['No primary node is available!'] at reactivemongo.core.actors.Exceptions$PrimaryUnavailableException$.(actors.scala) ~[reactivemongo_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23] at reactivemongo.core.actors.MongoDBSystem$$anonfun$pickChannel$4.apply(actors.scala:508) ~[reactivemongo_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23] at reactivemongo.core.actors.MongoDBSystem$$anonfun$pickChannel$4.apply(actors.scala:508) ~[reactivemongo_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23] at scala.Option.getOrElse(Option.scala:120) ~[scala-library-2.11.2.jar:na] at reactivemongo.core.actors.MongoDBSystem.pickChannel(actors.scala:508) ~[reactivemongo_2.11-0.10.5.0.akka23.jar:0.10.5.0.akka23]

MongoDB正常工作。我能够使用命令行工具和IntelliJ检索数据。

我将代码推送到github

也许有人知道问题并可以帮助我?那将非常棒。


问题已经解决。我想这可能是reactivemongo和play之间的问题。我几天后重新构建了我的应用程序,现在一切都正常工作。 - trollr
我并不认为这个问题已经解决。如果我创建太多的MongoDriver实例,我会遇到这个问题。做这样的事情很愚蠢,因为它浪费了连接和通道,并最终填满了mongod服务器的所有连接;但是,这种情况确实可能发生 :) - Reid Spencer
3个回答

0

我遇到了这个错误,因为我尝试使用一个未知的用户连接到数据库。创建该用户解决了这个错误。


0

可能无法启动Mongo服务器。 转到/bin文件夹并运行mongo。
您的临时文件夹可用空间可能太少。 尝试运行:mongo --smallfiles


0

虽然已经更新到Play 2.3.8并使用相同的rx mongo插件,但仍存在同样的问题。在mongo shell下,Mongodb支持良好,Intellij Idea 14中的mongo explorer也是如此。

在application.conf中使用mongodb.uri:

mongodb.uri = "mongodb://pxxxxxxxx:pxxxxxxxx@berne:27017/playdb"

深入挖掘,认为这是配置问题。

亨利


我改正了。我使用了错误的服务器URI。现在它可以正常工作了。 - user1981383

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接