2011-01-29 34 views
19

Tôi đã cài đặt Mongo và bson_ext bây giờ tôi đã tạo ra một tập tin rb với các nội dung sau ::Mongo - ruby ​​vấn đề kết nối

require 'rubygems' 
require 'mongo' 

db = Mongo::Connection.new.db("mydb") 
db = Mongo::Connection.new("localhost").db("mydb") 
db = Mongo::Connection.new("localhost", 27017).db("mydb") 

Tuy nhiên tôi nhận được lỗi sau trên chạy mã

[email protected]:~$ ruby firstruby.rb 
/home/ryuzaki/.rvm/gems/ruby-1.9.2-p136/gems/mongo-1.2.0/lib/mongo/connection.rb:451:in `connect': Failed to connect to a master node at localhost:27017 (Mongo::ConnectionFailure) 
    from /home/ryuzaki/.rvm/gems/ruby-1.9.2-p136/gems/mongo-1.2.0/lib/mongo/connection.rb:554:in `setup' 
    from /home/ryuzaki/.rvm/gems/ruby-1.9.2-p136/gems/mongo-1.2.0/lib/mongo/connection.rb:98:in `initialize' 
    from firstruby.rb:4:in `new' 
    from firstruby.rb:4:in `<main>' 

Vui lòng trợ giúp!

+6

Máy chủ mongo của bạn có thực sự chạy không? Điều gì sẽ xảy ra khi bạn thực hiện một 'telnet localhost 27017'? –

+3

Nếu mongo không chạy, chỉ cần làm trong một thiết bị đầu cuối khác: 'mongod' –

Trả lời

17

Điều này chắc chắn là do máy chủ mongo của bạn không chạy. Vì bạn đang sử dụng Ubuntu, hãy thử thực hiện sudo /etc/init.d/mongodb start và sau đó xem mã của bạn có hoạt động hay không.

+0

không có mongodb trong init.d. – Chani

+0

sommand của bạn trả về một lệnh không tìm thấy – Chani

+4

Bạn đã cài đặt mongo trên máy tính của bạn (tôi không chỉ có nghĩa là đá quý, tôi có nghĩa là một máy chủ mongo thực tế). Nếu không, bạn sẽ cần phải cài đặt nó: 'sudo apt-get install mongodb'. –

43

có điều này xảy ra nhiều lần bây giờ, và đây là giải pháp mà làm việc cho tôi:

sudo rm /var/lib/mongodb/mongod.lock 
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo start mongodb 
sudo status mongodb 
+3

Tôi gặp vấn đề tương tự sau khi tắt máy và xóa khóa đã giải quyết nó. Cảm ơn! – vise

+0

cũng đã làm điều đó cho tôi. Cảm ơn! – asenovm

+0

Cảm ơn, @Globalkeith! Đã chỉ cần chạy một bản cập nhật trên ubuntu và khởi động lại. Naughty ubuntu. – Tass

3

Tôi chỉ gặp này do tôi/etc/hosts không chứa một mục nhập cho "localhost" - hậu quả Ruby không thể giải quyết "localhost". Tôi cho rằng bạn có thể hardcode 127.0.0.1 vào mã của bạn chứ không phải là "localhost" - hoặc sửa chữa/etc/hosts để chứa:

127.0.0.1 localhost

0

Trên một mac, sử dụng brew tôi thấy rằng brew info mongodb và sau đó sử dụng sau đó

ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents hoặc mongod --config /usr/local/etc/mongod.conf đã hoạt động!

0

Đôi khi chỉ đơn giản là không đủ không gian.

ngoại lệ trong initAndListen: 15.926 không gian trống đủ cho tạp chí, chấm dứt

1

Nếu bạn đang ở trên một máy Mac và sử dụng Brew, khởi động lại dịch vụ giải quyết nó cho tôi:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist 
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist 

Bạn có thể tìm thông tin này bằng cách chạy brew info mongodb.

Các vấn đề liên quan