我一直在尝试在 Ubuntu 上将 Mongoid 与 Rails 结合使用。Mongodb 在我使用 rails app 3.0 到 3.2 时运行良好。
今天突然出现一个错误:
/home/pravinmishra/.rvm/gems/ruby-1.9.2-p318/gems/mongo-1.5.2/lib/mongo/connection.rb:413:in`connect':无法连接到 localhost:27017 的主节点(Mongo::ConnectionFailure)
我多次遇到这个问题,下面的命令对我有用:
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo start mongodb
sudo status mongodb
当我使用 mongo 从 Ubuntu 终端连接时出现此错误:
MongoDB shell 版本:2.0.1 连接到:测试星期一 7 月 9 日 22:47:06 错误:无法连接到服务器 127.0.0.1 shell/mongo.js:84 异常:连接失败
任何建议都将受到赞赏。
答案1
也许您的 mongodb 实例意外退出,并且您拥有陈旧的锁并且数据库处于不一致的状态。
正如您已经猜到的那样,使用该--repair
标志启动 mongoDB,但之后您需要在没有该标志的情况下重新启动它。
还要确保所有进程都已真正终止,否则您将无法在同一端口上绑定服务器。我建议执行netstat -tulnp
并仔细检查 27017 端口上是否没有任何内容在监听。
答案2
根据您的评论,关于旧的锁文件错误,您要么有一个 mongod 已经在运行,并且您正尝试连接到错误的端口,要么您遇到了先前运行的 mongod 进程异常关闭的情况,您需要删除锁文件并重新启动(可能根据异常关闭的性质进行修复)。
如果再次发生这种情况,一定要确保您在启用日志功能的情况下运行(2.0 中的默认设置),这样就不需要修复了。
答案3
您可能无法连接到默认的 localhost:27017,因为前一个实例肯定由于错误、异常或锁定而错误终止。请尝试终止之前的进程,然后再次运行。