【问题标题】:MongoDB Rails3.2 Database command 'create' failedMongoDB Rails3.2 数据库命令“创建”失败
【发布时间】:2017-03-08 03:36:32
【问题描述】:

我在配置新的 MacBookPro 以运行 Rails 3.2 应用程序时遇到问题。

  • Rails 3.2.12
  • MongoDB 2.6.9
  • Ruby 1.9.3

虽然我知道代码有效,但它适用于我的同事

  • 同事使用mongoexport 导出集合
  • 然后我用mongorestore 加载集合

从错误中,mongo 似乎正在尝试在每个请求上重新创建集合......但我知道我已经恢复了导出的集合。 这是错误:

Mongo::OperationFailure: Database command 'create' failed: (ok: '0.0'; errmsg: 'collection already exists'; code: '48').
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongo-1.6.2/lib/mongo/db.rb:526:in `command'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongo-1.6.2/lib/mongo/db.rb:297:in `create_collection'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongoid-2.4.12/lib/mongoid/collections/master.rb:41:in `initialize'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongoid-2.4.12/lib/mongoid/collection.rb:127:in `new'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongoid-2.4.12/lib/mongoid/collection.rb:127:in `master'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongoid-2.4.12/lib/mongoid/collection.rb:42:in `find'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongoid-2.4.12/lib/mongoid/contexts/mongo.rb:93:in `count'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongoid-2.4.12/lib/mongoid/criteria.rb:45:in `count'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mongoid-2.4.12/lib/mongoid/finders.rb:39:in `count'
from (irb):1
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.12/lib/rails/commands/console.rb:47:in `start'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.12/lib/rails/commands/console.rb:8:in `start'
from /usr/local/var/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.12/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

我们尝试仅恢复集合的一个子集,并尝试运行更新版本的 MongoDB 服务器。还没有运气。 我们很难过。欢迎任何帮助或建议。

【问题讨论】:

标签: ruby-on-rails ruby mongodb osx-elcapitan


【解决方案1】:

不知道为什么会抛出这个错误

它说得很清楚errmsg: 'collection already exists' 那么,如果集合已经存在,您是否检查了数据库?另外,您是否检查过您的代码是否在每次应用启动时都尝试创建集合?

可以连接数据库并执行

db.getCollectionNames()

这将显示至少插入了一个文档的集合,即使它们当前是空的。

如果你想删除它们来运行你的应用,你可以这样做

db.myColl.drop()

【讨论】:

  • 是的,该集合确实存在;它是从出口中恢复的。看起来它每次都在尝试重新创建集合,但是由于它不是为我的同事这样做,所以我试图找出我的配置可能有什么问题会抛出该错误代码。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 2019-09-07
  • 2019-02-11
  • 2023-03-24
  • 1970-01-01
  • 2021-05-25
相关资源
最近更新 更多