3

私はplayframeworkでsalatプラグインを使い始めようとしています。データベースを構成し、application.confすべての依存関係をファイルBuild.scalaに追加し、salatをplay.pluginsファイルに追加しました。実際にはまだプロジェクトにコードを追加していません。githubページの指示に従って、プロジェクトを実行しようとしました。次のエラーメッセージが表示されます

(サーバーが起動しました。Ctrl+ Dを使用して停止し、コンソールに戻ります...)

[情報]再生-mongodb[デフォルト]接続先heroku_app4620908@ds031907.mongolab.com:31907/heroku_app4620908
[エラー]アプリケーション-

!@6bchnaacn-リクエスト[GET/]の内部サーバーエラー->

play.api.Configuration $$ anon $ 1:構成エラー[[ds031907.mongolab.com/107.21.153.211:31907]に接続できませんでした]
    play.api.Configuration $ .play $ api $ Configuration $$ configError(Configuration.scala:71)〜[play_2.9.1-2.0.3.jar:2.0.3]で
    play.api.Configuration.reportError(Configuration.scala:258)〜[play_2.9.1-2.0.3.jar:2.0.3]で
    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]
    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]
原因:com.mongodb.CommandResult $ CommandFailure:コマンドが失敗しました[listDatabases]:{"serverUsed": "db-uri"、 "errmsg": "ログインが必要です"、 "ok":0.0}
    com.mongodb.CommandResult.getException(CommandResult.java:88)〜[mongo-java-driver-2.8.0.jar:naで
    com.mongodb.CommandResult.throwOnError(CommandResult.java:134)〜[mongo-java-driver-2.8.0.jar:na]で
    com.mongodb.Mongo.getDatabaseNames(Mongo.java:356)〜[mongo-java-driver-2.8.0.jar:na]で
    com.mongodb.casbah.MongoConnection.getDatabaseNames(MongoConnection.scala:190)〜[casbah-core_2.9.1-2.4.1.jar:2.4.1]で
    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]
    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ファイルに追加したので困惑しました。ログから、私のためにデータベースに接続しようとしているものは何でも、私が提供した情報を使用して最初にログインしていないように見えます。

4

4 に答える 4

6

あなたが言うように、根本的な問題は、MongoDBがコマンド「listDatabases」を拒否していることのようです。このコマンドは、MongoDBプロセスでホストされている他のデータベースに関する情報を明らかにするため、管理者がMongoDBプロセスにアクセスする必要があります。

残念ながら、「ログインする必要があります」というメッセージが返されるのは、少し誤解を招く恐れがあります。ログインしました!データベースを一覧表示する権限がありません。

これは、MongoDBシェルで自分で試すことができる簡単な実験です。「showdbs」はアプリで表示されたのと同じエラーメッセージで失敗しますが、「showcollections」は成功します。これは自分以外のデータベースへのアクセスを必要としません。

% 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を呼び出さないようにする方法はありますか?私はあなたが使用しているフレームワークに精通していません。

于 2012-08-17T19:59:51.953 に答える
2

私も問題があります...

すべてのデータベース名を要求するSalatPluginのonStartメソッドが付属している必要がありますsource._2.connection.getDatabaseNames()

このコードは、サーバーの動作をテストしているだけです...

これをどうやって違う方法でできるかをレオンに確認します!残念ながら、これが修正されるまで接続できません。

この問題にご期待くださいhttps://github.com/leon/play-salat/issues/23

于 2012-08-18T16:41:19.457 に答える
0

これはplay-salatの最新バージョンで修正され、代わりにgetCollectionNamesを使用するようになりました

于 2012-09-07T08:57:50.197 に答える
0

管理者を使用する

db.addUser('userName'、'userPassword')

db.auth('userName'、'userPassword')

dbsを表示

java:

DB db = mongo.getDB( "YouDBName");

db.authenticate( "userName"、 "userPassword" .toCharArray());

System.out.println(mongo.getDatabaseNames());

于 2013-10-21T03:33:31.530 に答える