2012-06-14 49 views
1

我在本地機器上過夜運行Rails rake任務,以便爲我的Mongo收集種子。它可能產生的約45,000條記錄之前,我收到以下異常:Mongo:丟失連接和集合

Operation failed with the following exception: connection closed 

Failed to connect to a master node at localhost:27017 

我在Mac OS X,所以我試圖mongo並取得了以下:

Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84 
exception: connect failed 

於是我就mongod思考這隻會啓動這個過程。它現在似乎已經索引了新的集合,因爲它們都是空的。我是否覆蓋了它們,或者它們可能還存在於某個地方?

我跑ls /data/db,我看到myapp_development.0myapp_development.ns。這是否告訴我什麼?

+0

我重新啓動了我的系統,現在一切都好? –

回答

2

聽起來像你的MongoDB數據目錄被設置爲默認(/ data/db)以外的地方。重新啓動可能會使用正確的--dbpath啓動mongod。

例如,如果您遵循了MAMP安裝指南,建議可能是將數據目錄放在/ Applications/MAMP/db/mongo中。

你應該能夠找到在蒙戈JS shell中運行以下命令使用的DBPATH:

db.adminCommand('getCmdLineOpts') 

尋找一個解析設置「DBPATH」。

+0

結果是'/ usr/local/var/mongodb'。我不明白爲什麼我的'rails c'會連接到一個空數據庫,然後在重啓後連接到完整的數據庫。是否有可能我的自動啓動Mongo與運行後崩潰的'mongod'不同? –

+1

如果您在沒有任何選項的情況下啓動mongod,它將假定數據目錄(dbpath)爲'/ data/db'。如果該目錄不存在或不可寫入,mongod將顯示錯誤消息並拒絕啓動。只要數據目錄具有適當的讀/寫權限,mongod就會在該目錄中創建和使用數據文件。如果數據目錄爲空,則與從全新安裝開始的效果相同:在開始插入數據之前,您的數據庫/集合都不會存在。 – Stennie

+1

您所擁有的自動啓動腳本正在執行相當於運行'mongod --dbpath/usr/local/var/mongodb'。 如果您想保存一組從命令行開始的一致選項,您可以在配置文件中指定它們,例如'mongod --config/etc/mongodb.conf'。選項記錄在[基於文件的配置](http://www.mongodb.org/display/DOCS/File+Based+Configuration)中。 – Stennie