2012-10-11 122 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”,它将开始工作。