22
4

1 に答える 1

20

問題は、認証資格情報が正しくないことです。具体的には、認証しようとしているユーザーが存在しません。

その理由はrake db:reseed、DB レベルのユーザーを含むすべてのデータが削除されるためです。

例:

  ➜  skadi git:(master) ✗ mongo         
  MongoDB shell version: 2.0.7
  connecting to: test
  > use skadi_development
  switched to db skadi_development
  > db.system.users.find()
  > db.addUser("joe", "passwordForJoe")
  { "n" : 0, "connectionId" : 191, "err" : null, "ok" : 1 }
  {
    "user" : "joe",
    "readOnly" : false,
    "pwd" : "dac588613249fe92703afb262ec53b82",
    "_id" : ObjectId("5030d5181cefbd2b04a99e30")
  }
  > db.system.users.find()
  { "_id" : ObjectId("5030d5181cefbd2b04a99e30"), "user" : "joe", "readOnly" : false, "pwd" : "dac588613249fe92703afb262ec53b82" }
  > exit
  bye

  ➜  skadi git:(master) ✗ rake db:reseed

  ➜  skadi git:(master) ✗ mongo         
  MongoDB shell version: 2.0.7
  connecting to: test
  > use skadi_development
  switched to db skadi_development
  > db.system.users.find()
  => Nothing

そのため、データベースに接続しようとすると、資格情報が無効になります。

MongoHQ 管理パネルで確認できます。Heroku にアクセスしてアプリを選択し、リソースをクリックして MongoHQ をクリックすると、それを見つけることができます。次に、[データベース ユーザー] タブをクリックします。

rake db:reseed以前は期待どおりに動作していましたが、新しいバージョンの mongoid で変更されました。system.* を除くすべてのコレクションを削除するには、rake db:purge.

その rake タスクは安定版ではまだ利用できないため、マスター ブランチを使用する必要がある場合があります。またはMongoid.purge!、安定版で動作するコードで使用するだけです。

詳細: https://github.com/mongoid/mongoid/issues/2275

于 2012-08-19T11:52:38.857 に答える