【问题标题】:'Mongo::OperationFailure' for some actions in RailsRails 中某些操作的“Mongo::OperationFailure”
【发布时间】:2016-04-04 05:31:30
【问题描述】:

我是 Mongo 的新手。我已经从this 源安装了 Mongodb。我正在使用 mongodb for Rails 应用程序。启动 mongodb 和 rails 后,应用程序加载正常。但是,当我尝试登录时它失败了。当我尝试在 rails 控制台中执行一些操作时,也会发生同样的事情。

这里是型号代码:

  def self.authenticate(email, password)
    user = find(:first, :conditions => {:email => email})
    if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
      user
    else
     nil
    end
  end

它在if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt) 失败

这是一个简短的错误:

数据库命令 'create' 失败:{"ok"=>0.0, "errmsg"=>"collection already exists", "code"=>48}

并且,完整的应用程序错误跟踪:

mongo (1.3.1) lib/mongo/db.rb:506:in command' mongo (1.3.1) lib/mongo/db.rb:284:increate_collection' mongoid (2.2.1) lib/mongoid/collections/master.rb:41:in initialize' mongoid (2.2.1) lib/mongoid/collection.rb:127:innew' mongoid (2.2.1) lib/mongoid/collection.rb:127:in master' mongoid (2.2.1) lib/mongoid/collection.rb:60:infind_one' mongoid (2.2.1) lib/mongoid/contexts/mongo.rb:164:in first' mongoid (2.2.1) lib/mongoid/criteria.rb:42:inone' mongoid (2.2.1) lib/mongoid/criterion/inclusion.rb:104:in find' mongoid (2.2.1) lib/mongoid/finders.rb:83:infind' actionpack (3.0.3) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (3.0.3) lib/abstract_controller/base.rb:151:inprocess_action' actionpack (3.0.3) lib/action_controller/metal/rendering.rb:11:in process_action' actionpack (3.0.3) lib/abstract_controller/callbacks.rb:18:inblock in process_action' activesupport (3.0.3) lib/active_support/callbacks.rb:435:in _run__902337259577170033__process_action__4476240526817474042__callbacks' activesupport (3.0.3) lib/active_support/callbacks.rb:409:in_run_process_action_callbacks' activesupport (3.0.3) lib/active_support/callbacks.rb:93:in run_callbacks' actionpack (3.0.3) lib/abstract_controller/callbacks.rb:17:inprocess_action' actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:30:in block in process_action' activesupport (3.0.3) lib/active_support/notifications.rb:52:inblock in instrument' activesupport (3.0.3) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (3.0.3) lib/active_support/notifications.rb:52:ininstrument' actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:29:in process_action' actionpack (3.0.3) lib/action_controller/metal/rescue.rb:17:inprocess_action' actionpack (3.0.3) lib/abstract_controller/base.rb:120:in process' actionpack (3.0.3) lib/abstract_controller/rendering.rb:40:inprocess' actionpack (3.0.3) lib/action_controller/metal.rb:138:in dispatch' actionpack (3.0.3) lib/action_controller/metal/rack_delegation.rb:14:indispatch' actionpack (3.0.3) lib/action_controller/metal.rb:178:in block in action' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:incall' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:in dispatch' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:27:incall' 机架安装 (0.6.14) lib/rack/mount/route_set.rb:148:in block in call' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:inblock 在识别' 机架安装 (0.6.14) lib/rack/mount/code_generation.rb:75:in optimized_each' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:inrecognize' 机架安装 (0.6.14) lib/rack/mount/route_set.rb:139:in call' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:492:incall' mongoid (2.2.1) lib/rack/mongoid/middleware/identity_map.rb:33:in block in call' mongoid (2.2.1) lib/mongoid.rb:130:inunit_of_work' mongoid (2.2.1) lib/rack/mongoid/middleware/identity_map.rb:33:in call' actionpack (3.0.3) lib/action_dispatch/middleware/best_standards_support.rb:17:incall' actionpack (3.0.3) lib/action_dispatch/middleware/head.rb:14:in call' rack (1.2.4) lib/rack/methodoverride.rb:24:incall' actionpack (3.0.3) lib/action_dispatch/middleware/params_parser.rb:21:in call' actionpack (3.0.3) lib/action_dispatch/middleware/flash.rb:182:incall' actionpack (3.0.3) lib/action_dispatch/middleware/session/abstract_store.rb:149:in call' actionpack (3.0.3) lib/action_dispatch/middleware/cookies.rb:295:incall' actionpack (3.0.3) lib/action_dispatch/middleware/callbacks.rb:46:in block in call' activesupport (3.0.3) lib/active_support/callbacks.rb:415:in_run_call_callbacks' actionpack (3.0.3) lib/action_dispatch/middleware/callbacks.rb:44:in call' rack (1.2.4) lib/rack/sendfile.rb:106:incall' actionpack (3.0.3) lib/action_dispatch/middleware/remote_ip.rb:48:in call' actionpack (3.0.3) lib/action_dispatch/middleware/show_exceptions.rb:46:incall' railties (3.0.3) lib/rails/rack/logger.rb:13:in call' rack (1.2.4) lib/rack/runtime.rb:17:incall' activesupport (3.0.3) lib/active_support/cache/strategy/local_cache.rb:72:in call' rack (1.2.4) lib/rack/lock.rb:11:inblock in call' 机架 (1.2.4) lib/rack/lock.rb:11:in synchronize' rack (1.2.4) lib/rack/lock.rb:11:incall' actionpack (3.0.3) lib/action_dispatch/middleware/static.rb:30:in call' railties (3.0.3) lib/rails/application.rb:168:incall' railties (3.0.3) lib/rails/application.rb:77:in method_missing' railties (3.0.3) lib/rails/rack/log_tailer.rb:14:incall' 机架 (1.2.4) lib/rack/content_length.rb:13:in call' rack (1.2.4) lib/rack/handler/webrick.rb:52:inservice' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/httpserver.rb:138:in service' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/httpserver.rb:94:inrun' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

非常感谢任何帮助。

【问题讨论】:

  • 你能显示型号和代码吗?
  • @HarryBomrah 我已经添加了型号代码

标签: ruby-on-rails mongodb


【解决方案1】:

在检查代码和谷歌搜索后,我发现每个请求中都发送了一个特殊字符。我的请求参数是这样的:

{  
   "utf8"=>"✓",
   "authenticity_token"=>"cAcdDOzfBgalF5em+97mTKw9DAjymfmEmG6hc+dDqhQ=",
   "email"=>"super_admin_user@test.com",
   "password"=>"[FILTERED]",
   "commit"=>"Login"
}

不确定是什么触发了“✔。但是谷歌的一篇文章说,在 2.2 系列中存在一个与此相关的错误,该错误已在更高版本中得到修复。

所以,我发现我的 mongoid 版本是 2.2.1,一旦我升级它,问题就解决了。

注意:我是 mongoid 的新手,并给出了一个知识最少的解决方案。如果需要,请添加详细信息。

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2010-11-22
    • 2021-10-18
    • 1970-01-01
    • 2012-03-29
    • 2013-03-11
    • 2012-04-30
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多