2012-10-11 130 views
118

,我發現了以下錯誤:無法連接到服務器127.0.0.1:27017

[email protected]:/$ mongo 
MongoDB shell version: 2.2.0 
connecting to: test 
Thu Oct 11 11:46:53 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91 
exception: connect failed 
[email protected]:/$ 

這是發生了什麼,當我嘗試啓動的MongoDB:

* Starting database mongodb            [fail] 

我已經嘗試過mongo --repair

我做了chown和chmod到var,lib和data/db和log mongodb。

不知道還有什麼辦法。有什麼建議麼?

mongodb.log:

***** SERVER RESTARTED ***** 


Thu Oct 11 08:29:40 
Thu Oct 11 08:29:40 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability. 
Thu Oct 11 08:29:40 
Thu Oct 11 08:29:41 [initandlisten] MongoDB starting : pid=1052 port=27017 dbpath=/var/lib/mongodb 32-bit host=alex-K43U 
Thu Oct 11 08:29:41 [initandlisten] 
Thu Oct 11 08:29:41 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data 
Thu Oct 11 08:29:41 [initandlisten] **  see http://blog.mongodb.org/post/137788967/32-bit-limitations 
Thu Oct 11 08:29:41 [initandlisten] **  with --journal, the limit is lower 
Thu Oct 11 08:29:41 [initandlisten] 
Thu Oct 11 08:29:41 [initandlisten] db version v2.2.0, pdfile version 4.5 
Thu Oct 11 08:29:41 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207 
Thu Oct 11 08:29:41 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49 
Thu Oct 11 08:29:41 [initandlisten] options: { config: "/etc/mongodb.conf", dbpath: "/var/lib/mongodb", logappend: "true", logpath: "/var/log/mongodb/mongodb.log" } 
Thu Oct 11 08:29:41 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/var/lib/mongodb/journal" 
************** 
Unclean shutdown detected. 
Please visit http://dochub.mongodb.org/core/repair for recovery instructions. 
************* 
Thu Oct 11 08:29:41 [initandlisten] exception in initAndListen: 12596 old lock file, terminating 
Thu Oct 11 08:29:41 dbexit: 
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to close listening sockets... 
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to flush diaglog... 
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to close sockets... 
Thu Oct 11 08:29:41 [initandlisten] shutdown: waiting for fs preallocator... 
Thu Oct 11 08:29:41 [initandlisten] shutdown: closing all files... 
Thu Oct 11 08:29:41 [initandlisten] closeAllFiles() finished 
Thu Oct 11 08:29:41 dbexit: really exiting now 

編輯:

我刪除了鎖,然後做的mongod修復和得到這個錯誤:

Thu Oct 11 12:05:37 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating 

所以我做到了sudo:

[email protected]:~$ sudo mongod --repair 
Thu Oct 11 12:05:42 
Thu Oct 11 12:05:42 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability. 
Thu Oct 11 12:05:42 
Thu Oct 11 12:05:42 [initandlisten] MongoDB starting : pid=5129 port=27017 dbpath=/data/db/ 32-bit host=alex-K43U 
Thu Oct 11 12:05:42 [initandlisten] 
Thu Oct 11 12:05:42 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data 
Thu Oct 11 12:05:42 [initandlisten] **  see http://blog.mongodb.org/post/137788967/32-bit-limitations 
Thu Oct 11 12:05:42 [initandlisten] **  with --journal, the limit is lower 
Thu Oct 11 12:05:42 [initandlisten] 
Thu Oct 11 12:05:42 [initandlisten] db version v2.2.0, pdfile version 4.5 
Thu Oct 11 12:05:42 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207 
Thu Oct 11 12:05:42 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49 
Thu Oct 11 12:05:42 [initandlisten] options: { repair: true } 
Thu Oct 11 12:05:42 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/data/db/journal" 
Thu Oct 11 12:05:42 [initandlisten] finished checking dbs 
Thu Oct 11 12:05:42 dbexit: 
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to close listening sockets... 
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to flush diaglog... 
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to close sockets... 
Thu Oct 11 12:05:42 [initandlisten] shutdown: waiting for fs preallocator... 
Thu Oct 11 12:05:42 [initandlisten] shutdown: closing all files... 
Thu Oct 11 12:05:42 [initandlisten] closeAllFiles() finished 
Thu Oct 11 12:05:42 [initandlisten] shutdown: removing fs lock... 
Thu Oct 11 12:05:42 dbexit: really exiting now 

但仍然有同樣的問題。

+1

我認爲這個鏈接將幫助您 http://stackoverflow.com/questions/9647561/how-to-connect-to-mongodb-on-windows 通過改變蒙戈 – Med7at

回答

26

日誌表明mongodb因爲有一箇舊的鎖定文件而終止。

如果您不是並且沒有運行日誌記錄,請刪除鎖定文件,運行修復並再次啓動mongodb。

如果您正在運行或正在運行日記功能,請參見the relevant Mongo DB docs。請注意,他們會說:「如果您使用日記功能運行,則不應該執行修復以恢復到一致狀態。」所以如果你正在寫日記,修復可能會讓事情變得更糟。

+19

的數據庫路徑這是不好說修理會損壞東西! – UpTheCreek

+1

在啓用日記的情況下,如果我得到連接拒絕錯誤很頻繁,該怎麼辦? – Shashank

3

您可以檢查netstat -anp | grep 27017以查看該端口是否被另一個進程使用。

+0

奇怪,我得到這個:alex @ alex-K43U:〜$ netstat -anp | grep 27017 (並非所有進程都可以識別,非擁有的進程信息 將不會顯示,您必須是root才能看到這一切。) – alexchenco

+2

這是以非root用戶身份執行的正常結果,因爲netstat將只顯示您的用戶可以看到的進程。 – Efren

+0

你可以使用sudo netstat -anp | grep 27017以通過該警告 – Coronellx

70

運行之前您是否運行過mongodmongo

我遵循http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/的mongodb安裝說明,我只有在運行mongo之前運行mongo進程mongod之前遇到同樣的錯誤。我想安裝MongoDB也會啓動它,但是在你做任何需要MongoDB的東西之前,你需要手動啓動它,並且使用mongod

+7

這是我的問題。我很驚訝這在「Mongo入門」文檔中沒有明確提出。 – jononomo

+0

這從用戶體驗的角度來看確實沒有意義。 'mongo.exe'應該是啓動數據庫的那個。 –

11

嘗試

sudo service mongodb start 

這解決了我的問題。

+0

'sudo service mongod start'和'sudo service mongodb start'有什麼區別 – geckob

+0

我不太確定,但猜測mongodb是服務的名稱,而mongod是程序文件的名稱。 –

116
Step 1: Remove lock file. 
sudo rm /var/lib/mongodb/mongod.lock 

Step 2: Repair mongodb. 
sudo mongod --repair 

Step 3: start mongodb. 
sudo start mongodb 
or 
sudo service mongodb start 

Step 4: Check status of mongodb. 
sudo status mongodb 
or 
sudo service mongodb status 

Step 5: Start mongo console. 
mongo 
+0

hi南河Kumnar什麼是終端的初始路徑。我們應該去cd/usr/local/opt/mongodb /文件夾或另一個,我面臨以下問題Vijayvir-Singh:〜vijayvir $ sudo rm /var/lib/mongodb/mongod.lock rm:/ var/lib/mongodb/mongod.lock:沒有這樣的文件或目錄 Vijayvir-Singh:〜vijayvir $ –

+0

@vvss先找到文件的路徑。用這個。找到mongod.lock –

+4

在版本2.4.8中,它是'/ data/db/mongod.lock'而不是'/ var/lib/mongodb/mongod.lock' – Loolooii

7

檢查您的文件系統的可用空間,並增加它,如果它少。這也可能導致mongo無法啓動。檢查/var/log/mongodb/mongodb.log文件。

ERROR: Insufficient free space for journal files 
Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles 
+0

這發生在我身上,我添加了smallfiles = true到文件/ etc/mongod.conf – Carlos

6

嘗試在mongo之前運行mongod

sudo /usr/sbin/mongod在我的openSUSE

這解決了我的問題,

3

這爲我工作:

sudo rm /var/lib/mongodb/mongod.lock  
sudo service mongodb restart 
2

後頻繁嘗試終於我到解決問題...

Step 1: ps aux | grep mongo 
Step 2: sudo rm /var/lib/mongodb/mongod.lock 
Step 3: sudo mongod --repair 
Step 4: mongo 
2

我跟着文檔http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/

經過配置和重啓後,我執行了sudo service mongod start,得到... [FAILED]

最後,我發現mongod已經開始。我認爲yum install將它添加到自動啓動。

檢查您的mongod是否正在運行:service mongod status

希望這可以幫助某人有同樣的問題。

1

刪除我的Windows操作系統中的數據目錄內的mongod.lock後,它仍顯示相同的錯誤消息。我必須使用--dbpath運行mongod,以使mongo命令無誤地運行。

26

這是因爲mongod的過程中它的下跌,你必須運行的命令,以起牀mongod的過程吼叫:

sudo service mongodb stop 
sudo rm /var/lib/mongodb/mongod.lock 
sudo mongod --repair --dbpath /var/lib/mongodb 
sudo mongod --fork --logpath /var/lib/mongodb/mongodb.log --dbpath /var/lib/mongodb 
sudo service mongodb start 

希望這有助於你。

+1

問題解決了。謝謝。我會在第一條命令之前添加「'sudo service mongod stop'''和''sudo service mongodb stop'''命令,因爲有些人可能還會讓它們運行。 –

+0

完美,謝謝 –

2

此錯誤可能是由MongoDB的綁定IP設置引起的。您可以通過

$ sudo vi /etc/mongodb.conf 

在我的情況下檢查MongoDB的配置文件,綁定IP設置爲服務器的內網地址,就像下面:

bind_ip = 10.10.1.14 
#port = 27017 

所以我必須給蒙戈的IP參數,以連接到外殼按類型:

$ mongo 10.10.1.14 

如果更改了配置,請不要忘記重新啓動mongodb服務。

5

所以首先要通過下面的命令來刪除文件mongod.lock

sudo rm /var/lib/mongodb/mongod.lock 

,然後通過發出以下命令來重新啓動蒙戈服務

sudo service mongod restart 
1

我有蒙戈版本3.2.1和必須從/data/db/中刪除鎖定文件,然後運行mongod併成功啓動。

>rm /data/db/mongod.lock 
>mongod 
1

雖然收到了答案,但我想討論一下MongoDB中的網絡錯誤。

Network errors MongoDB

設置安全寫入擔憂是不充分證明方法,以確保我們的安全。假設設置了w=1 & j=true,如果沒有從服務器收到寫入確認,該怎麼辦?好吧,這種可能性並沒有發生,但可能發生了。這可能發生的原因是存在網絡錯誤 - 有理由說我們可能沒有收到肯定的答覆。因此,我們可以通過選擇的語言驅動程序發送來自應用程序的請求。 mongod可以成功完成它,然後可能會發生TCP重置,並且網絡實際上可以以我們從未收到響應的方式重置。所以,我們可以得到一個錯誤和錯誤,我們可能會認爲我們得到了一個錯誤。它沒有發生,但可能發生。

對於插入,可以防止它。這是可能的,因爲如果我們讓驅動程序創建_id並且我們做了一個插入 - 那麼我們可以做多次插入,這將是任何傷害。因爲,如果我們這樣做1 st時間,我們得到一個錯誤,並且我們不確定插入是否完成,因爲它是網絡錯誤,那麼我們可以重新執行一次。並提供我們再次執行它,tyr執行確切的_id。最糟糕的情況是,當我們嘗試插入它時,會出現重複鍵錯誤。

但是,更新是問題發生的地方。特別是,這個更新不是強大的,例如包含一個$ink命令。所以,我們告訴數據庫增加一個特定的字段。那麼在那種情況下,如果我們發現網絡錯誤,並且我們不知道是否發生更新。現在,也許我們足夠了解可以與他們檢查更新發生的值,這很好。但是如果我們不知道數據庫中該字段的起始值,那麼在出現網絡錯誤的情況下,我們不可能知道它是否發生。良好的網絡極其少見這類問題。

如果我們真的需要不惜一切代價避免它,那麼我們需要做的就是將所有更新轉換爲插入,方法是從數據庫中讀取文檔的完整值,然後刪除並插入它再或者只是插入一個新的。

爲什麼一個應用程序可能會收到一條錯誤回即使寫入成功的原因:

  • 的應用程序和服務器之間的網絡TCP連接被重置的服務器接收到一個寫之後,但在一個反應​​可能被髮送。
  • MongoDB服務器在接收寫入和響應之間終止。
  • 網絡在寫入時間和客戶端收到寫入響應的時間之間失敗。
0

將bin添加到環境變量中的PATH幫助。

GOTO安裝路徑並複製../ bin到Windows環境變量中的PATH變量

0

Thu Oct 11 12:05:42 [initandlisten]無法檢查日誌文件,因爲:boost :: filesystem::basic_directory_iterator構造函數:沒有這樣的文件或目錄:「/數據/分貝/期刊」 星期四10月11日12時05分42秒[initandlisten]完成檢查DBS

此行沒有這樣的文件或目錄所以創建文件夾/數據/分貝 根然後嘗試「mongod」希望這會起作用

2

在windows下運行cmd爲管理員:

  1. 創建目錄:

    的mkdir C:\蒙戈\ DATA \ DB

  2. 安裝服務:

    mongod.exe - -install --logpath c:\ mongo \ logs --logappend --bind_ip 127.0.0.1 --dbpath c:\ mongo \ data \ db --directoryperdb

  3. 開始的MongoDB:

    網絡啓動MongoDB的

4.啓動蒙戈殼牌:

c:\mongo\bin\mongo.exe 

該解決方案的工作對我罰款

0

窗口+ R 和輸入以下內容

services.msc

start MongoDB

現在在cmd中在mongo.exe所在的相應路徑中鍵入「mongo」,它將開始工作。