gpt4 book ai didi

mongodb - 无法使用 salat : command failed [listDatabases] 从 Play 应用程序连接到 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 09:21:02 26 4
gpt4 key购买 nike

我正在尝试开始使用 playframework 中的 salat 插件。我已经在 application.conf 中配置了数据库并将所有依赖项添加到 Build.scala 并将 salat 添加到 play.plugins 文件。我实际上还没有向项目添加任何代码,我只是按照 github 页面上的说明进行操作,然后尝试运行该项目。我收到以下错误消息

(Server started, use Ctrl+D to stop and go back to the console...)[info] play - mongodb [default] connected at heroku_app4620908@ds031907.mongolab.com:31907/heroku_app4620908[error] application - ! @6bchnaacn - Internal server error, for request [GET /] ->play.api.Configuration$$anon$1: Configuration error [couldn't connect to [ds031907.mongolab.com/107.21.153.211:31907]]    at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:71) ~[play_2.9.1-2.0.3.jar:2.0.3]    at play.api.Configuration.reportError(Configuration.scala:258) ~[play_2.9.1-2.0.3.jar:2.0.3]    at se.radley.plugin.salat.SalatPlugin$$anonfun$onStart$1.apply(SalatPlugin.scala:105) ~[play-plugins-salat_2.9.1-1.0.8.jar:1.0.8]    at se.radley.plugin.salat.SalatPlugin$$anonfun$onStart$1.apply(SalatPlugin.scala:98) ~[play-plugins-salat_2.9.1-1.0.8.jar:1.0.8]    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194) ~[scala-library.jar:0.11.3]    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194) ~[scala-library.jar:0.11.3]Caused by: com.mongodb.CommandResult$CommandFailure: command failed [listDatabases]: { "serverUsed" : "db-uri" , "errmsg" : "need to login" , "ok" : 0.0}    at com.mongodb.CommandResult.getException(CommandResult.java:88) ~[mongo-java-driver-2.8.0.jar:na    at com.mongodb.CommandResult.throwOnError(CommandResult.java:134) ~[mongo-java-driver-2.8.0.jar:na]    at com.mongodb.Mongo.getDatabaseNames(Mongo.java:356) ~[mongo-java-driver-2.8.0.jar:na]    at com.mongodb.casbah.MongoConnection.getDatabaseNames(MongoConnection.scala:190) ~[casbah-core_2.9.1-2.4.1.jar:2.4.1]    at se.radley.plugin.salat.SalatPlugin$$anonfun$onStart$1.apply(SalatPlugin.scala:103) ~[play-plugins-salat_2.9.1-1.0.8.jar:1.0.8]    at se.radley.plugin.salat.SalatPlugin$$anonfun$onStart$1.apply(SalatPlugin.scala:98) ~[play-plugins-salat_2.9.1-1.0.8.jar:1.0.8]

我很困惑,因为我将我的密码和所有内容都添加到了 conf 文件中。从日志看来,无论是什么试图为我连接到数据库,都没有使用我提供的信息先登录。

最佳答案

正如您所说,看起来根本问题是 MongoDB 拒绝命令“listDatabases”。此命令 requires administrator access到 MongoDB 进程,因为它揭示了那里托管的其他数据库的信息。

不幸的是,它返回的消息“需要登录”有点误导。您已登录!您只是没有列出数据库的权限。

这是一个简单的实验,您可以自己尝试使用 MongoDB shell。看到“show dbs”失败并显示与您在应用程序中收到的相同的错误消息,但是不需要访问您自己以外的任何其他数据库的“show collections”成功了吗?

% mongo ds031907.mongolab.com:31907/heroku_app4620908 -u heroku_app4620908 -p your_password
MongoDB shell version: 2.0.7
connecting to: ds031907.mongolab.com:31907/heroku_app4620908
> show dbs
Fri Aug 17 13:12:10 uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 }
> show collections
system.indexes
system.users

(注意:我使用自己的 MongoLab 帐户执行此操作,并在复制和粘贴此处时修改了文本,以便您可以将其复制到您的终端中。)

有没有办法避免调用 listDatabases?我不熟悉您使用的框架。

关于mongodb - 无法使用 salat : command failed [listDatabases] 从 Play 应用程序连接到 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com