178

我收到以下错误:

alex@alex-K43U:/$ 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
alex@alex-K43U:/$ 

这是我尝试启动 mongodb 时发生的情况:

* Starting database mongodb                                             [fail]

我已经试过了mongo --repair

我将 chown 和 chmod 设置为var、lib 和 data/db 并记录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 做到了:

alex@alex-K43U:~$ 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

但仍然有同样的问题。

4

37 回答 37

165
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 
于 2013-07-22T17:36:15.587 回答
90

你跑mongod前跑了mongo吗?

我按照http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/中的 mongodb 安装说明进行操作,只有mongo在实际运行 mongo 进程之前运行时,我才遇到与您相同的错误mongod. 我认为安装 mongodb 也会启动它,但您需要手动启动它,mongod然后再执行其他需要 mongodb 的操作。

于 2013-06-20T18:08:51.237 回答
83

这是因为 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

希望这可以帮助你。

于 2016-01-17T06:35:27.200 回答
40

日志表明 mongodb 正在终止,因为有一个旧的锁文件。

如果您不是并且没有运行日志,请删除锁定文件,运行修复,然后再次启动 mongodb。

如果您正在或曾经在打开日志的情况下运行,请参阅相关的 Mongo DB 文档。请注意,他们说“如果您使用日记功能运行,则不应进行修复以恢复到一致的状态。” 所以如果你在写日记,修理可能会让事情变得更糟。

于 2012-10-11T03:54:20.040 回答
13

尝试

sudo service mongodb start

这解决了我的问题。

于 2013-07-04T07:16:31.380 回答
10

苹果系统

如果你有 mac 并使用 mongodb4.4,你可以运行:

brew services start mongodb-community@4.4
于 2020-10-06T21:19:45.173 回答
8

检查您的文件系统可用空间,如果它更少,请增加它。这也可能导致 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
于 2014-07-14T07:10:32.190 回答
7

尝试运行mongod之前mongo

sudo /usr/sbin/mongod在我的opensuse上

这解决了我的问题,

于 2014-09-09T12:02:33.357 回答
7

所以首先你必须通过以下命令删除 mongod.lock 文件

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

然后通过发出以下命令重新启动 mongo 服务

sudo service mongod restart 
于 2016-02-01T06:40:39.577 回答
5

在 Windows 中cmd以管理员身份运行:

1.创建目录:

mkdir c:\mongo\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:

net start MongoDB

4.启动Mongo Shell:

c:\mongo\bin\mongo.exe

这个解决方案对我有用。

于 2017-07-22T02:33:22.497 回答
4

您可以检查netstat -anp | grep 27017以查看该端口是否正在被另一个进程使用。

于 2012-10-11T04:00:08.760 回答
4

为了将来参考,请按照以下步骤避免类似错误:

1.下载MondoDB https://www.mongodb.com/

2.打开终端并 cd 进入您的下载文件夹或保存 mondodb 下载的任何文件夹(确保在 cd 进入之前解压缩 mongodb 文件夹)

cd Downloads

3.将mongodb移动到你的usr/local路径

sudo mv mongodb-osx-... /usr/local/mongodb

4.cd 进入本地文件夹

cd /usr/local/mongodb

5.新建一个目录

sudo mkdir -p /data/db

6.cd进入上面刚刚创建的新目录

cd /data/db

7.give mongo 权限

sudo chown YourMacUserName /data/db

8.然后去/打开你的 .bash_profile

为此,请按照以下步骤操作:

在您的新终端中

1 . cd 2 .pwd 3 .ls -l

检查 .bash_profile 是否出现在终端的文件列表中

如果不创建 -bash_profile

创建 .bash_profile:

在你的终端

触摸 .bash_profile

//如果你已经有一个 .bash_profile 跳过这一步

第八步:

接下来 在您的终端中:

open .bash_profile

在弹出的 bash 文件中添加以下内容:

MONGO_PATH=/usr/local/mongodb
export PATH=$PATH:$MONGO_PATH/bin

然后保存。(文件保存或命令 S/CMD+S)

Step9:回到你的终端

source .bash_profile

现在打开两个终端。一个将用于您的mondo 守护程序,另一个用于您的mongo

终端 1: 在您的终端类型中:mongod

mongodb

输出: 蒙戈码头

2号航站楼:

mongo

输出: 蒙戈码头

还要确保在终端中启动 mongod 时不会出现以下拼写错误: 这是不正确的

mongo d

发出以下错误无法连接到 127.0.0.1:27017,在(轮询后检查套接字是否有错误),原因:连接被拒绝

这是对的:

mongod

(mongo 和 d.. mondod之间不应有空格

最后始终记住,在终端上运行 mongo 之前必须运行 mondod

于 2018-04-05T12:29:05.943 回答
4

第一次尝试:

sudo service mongod restart 

如果您收到错误:活动:失败(结果:退出代码)自 2021 年 3 月 29 日星期一 19:59:07 WEST 以来;3s

这可能是因为 /var/lib/mongodb 和 /tmp/mongodb-27017.lock 上的权限设置错误。您必须将所有者更改为 monogdb 用户

尝试:

chown -R mongodb:mongodb /var/lib/mongodb
chown mongodb:mongodb /tmp/mongodb-27017.sock

sudo service mongod restart
于 2021-03-29T19:10:58.963 回答
3

这对我有用:

sudo rm /var/lib/mongodb/mongod.lock    
sudo service mongodb restart
于 2014-12-26T07:51:02.953 回答
3

在终端中运行这些命令

1)

$ sudo service mongod start

2)

 $ mongo
于 2019-03-06T11:52:38.767 回答
2

经过多次尝试,我终于解决了问题......

Step 1: ps aux | grep mongo
Step 2: sudo rm /var/lib/mongodb/mongod.lock
Step 3: sudo mongod --repair
Step 4: mongo
于 2015-04-20T15:13:39.860 回答
2

我遵循了http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/上的文档。

配置并重新启动后,我执行sudo service mongod start并得到了... [FAILED].

最后,我发现mongod已经开始了。我认为将其yum install添加到自动启动中。

要检查您mongod是否正在运行:service mongod status.

希望这可以帮助有同样问题的人。

于 2015-06-23T09:18:16.970 回答
2

此错误可能是由 MongoDB 的绑定 IP 设置引起的。您可以通过以下方式检查 MongoDB 的配置文件

$ sudo vi /etc/mongodb.conf

在我的例子中,绑定 IP 设置为服务器的内网地址,如下所示:

bind_ip = 10.10.1.14 
#port = 27017

所以我给了mongo一个IP参数来按类型连接到shell:

$ mongo 10.10.1.14

如果您更改了配置,请不要忘记重新启动 mongodb 服务。

于 2016-01-28T19:53:26.050 回答
2

我有 mongo 版本 3.2.1 并且必须从中删除锁定文件,/data/db/然后运行mongod并成功启动。

>rm /data/db/mongod.lock
>mongod
于 2016-02-13T14:57:41.867 回答
1

虽然收到了答案,但我希望讨论MongoDB.

网络错误 MongoDB

设置安全写入关注点并不是确保我们安全的完整证明方法。假设设置了w=1& j=true,如果没有从服务器收到写确认怎么办?好吧,很可能是它没有发生,但它可能已经发生了。发生这种情况的原因是存在网络错误 - 我们可能无法收到肯定的响应。因此,我们可以通过选择语言的驱动程序从应用程序发送请求。mongod可以成功完成它,然后可能会有 TCP 重置,网络实际上可以以我们永远不会收到响应的方式重置。所以,我们可能会得到一个错误,并且在这个错误上,我们可能会假设我们得到了一个错误。它没有发生,但它可能会发生。

对于插入,可以防范它。这是可能的,因为如果我们让驱动程序创建_id并执行插入 - 那么我们可以多次执行该插入,这将是任何伤害。因为,如果我们第一次执行此操作并收到错误,并且由于网络错误而不确定该插入是否完成,那么我们可以再次执行此操作。如果我们再次执行它,请使用exact 执行它_id。最坏的情况是当我们尝试插入它时会得到一个重复的键错误。

但是,更新是问题发生的地方。特别是,不是项目有效的更新,例如包含$ink命令。所以,我们告诉数据库增加某个字段。那么在这种情况下,如果我们遇到网络错误并且我们不知道更新是否发生。现在,也许我们对值有足够的了解,可以通过它们检查更新是否发生,这很好。但是如果我们不知道该字段在数据库中的起始值,那么我们就不可能知道它是否发生在网络错误的情况下。这种问题在网络良好的情况下极为罕见。

如果我们真的需要不惜一切代价避免它,我们需要做的是通过从数据库中读取文档的完整值然后可能删除它并再次插入它或者只是插入一个新的。

即使写入成功,应用程序也可能收到错误返回的原因:

  • 应用程序和服务器之间的网络 TCP 连接在服务器收到写入后但在发送响应之前被重置。
  • 服务器在MongoDB接收写入和响应之间终止。
  • 网络在写入时间和客户端收到写入响应之间发生故障。
于 2016-09-24T14:12:55.107 回答
1

在我的 Windows 操作系统的数据目录中删除 mongod.lock 后,它仍然显示相同的错误消息。我必须使用 --dbpath 运行 mongod 才能使 mongo 命令运行时没有错误。

于 2015-09-08T11:40:15.060 回答
1

这对我有用要停止使用 mongodb:

use admin
db.shutdownServer()

并重新启动:

sudo service mongod restart
于 2018-12-15T03:51:41.567 回答
0

我遇到了类似的错误,但根本原因不同。使用自制软件安装 mongodb 后。 https://docs.mongodb.com/manual/installation/ 在终端上给出“mongo”命令之前,我必须启动“mongod”服务。

于 2020-01-12T07:54:19.513 回答
0

可能导致此错误的一件事是您的 MongoDb 服务器进程/服务没有运行。检查它是否正在运行,如果没有,那么您也可以尝试从任务管理器启动 MongoDb 服务器服务,如下图所示。

在此处输入图像描述

于 2021-12-12T12:38:54.533 回答
0

键入windows+r 并输入以下内容

服务.msc

启动 MongoDB

现在在 mongo.exe 所在的相应路径中的 cmd 中键入“mongo”,它将开始工作。

于 2017-10-09T17:20:33.297 回答
0

1.在d盘D:/data/db新建文件夹

2.在 D:/data/db 上打开终端

3.键入mongod并输入。

4.键入mongo并输入。

而你的 mongodb 已经分层了............

于 2018-07-19T06:24:54.720 回答
0

刚从mongod --repair_C:\Program Files\MongoDB\Server\4.0\bin

这是文档https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/

于 2018-09-19T13:31:05.153 回答
0

在环境变量中将 bin 添加到 PATH 有帮助。

转到安装路径并将 ../bin 复制到 Windows 环境变量中的 PATH 变量中

于 2017-03-27T06:59:44.600 回答
0

在本地数据库 mongo 连接到 127.0.0.1:27017 :: 时出错 :: Connection refused :

尝试使用此命令

mongod --config /usr/local/etc/mongod.conf --fork

于 2021-05-20T15:09:28.517 回答
0

错误:无法连接到服务器 127.0.0.1:27017

这是 WINDOWS 用户在此处输入代码的解决方案 1. 创建目录:

mkdir c:\mongo\data\db
  1. 安装服务:首先用cd进入MongoDB程序文件中的bin目录

mongod.exe --install --logpath

  1. 启动 MongoDB:

    net start MongoDB

4.启动Mongo Shell:

`c:\mongo\bin\mongo.exe` or

去直到 bin 并输入mongo

注意:在管理员模式下打开终端

于 2020-05-03T16:12:00.697 回答
0

如果您使用的是 OS X 系统,则没有service命令。所以你将无法执行sudo service mongod start.

检查此答案https://unix.stackexchange.com/a/155746以获得更多帮助!

于 2020-03-25T11:13:01.520 回答
0

这项工作是给我的。在 Linux Ubuntu 20 上

  1. sudo systemctl start mongod
  2. sudo systemctl daemon-reload
  3. sudo systemctl start mongod(再次是)
  4. sudo systemctl status mongod(检查 mongo 状态!)
  5. sudo systemctl 启用 mongod
  6. 蒙哥
于 2021-07-05T20:50:34.593 回答
0

简单跑两点赞

sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --repair 
于 2019-12-03T06:53:37.970 回答
0

我屏蔽了我的 mongod 服务,我必须使用此命令将其删除。

sudo systemctl unmask mongod

然后重启服务

于 2021-07-30T16:01:10.480 回答
0

示例解决方案 按Window+R 并键入services.msc 以查看机器上的所有服务然后找到MongoDBServer右键单击它并启动它。然后转到 C:\Program Files\MongoDB\Server\4.2\bin 并在命令提示符上键入 mongo。

于 2020-07-28T11:35:01.737 回答
0

试试看嘛:

sudo service mongod restart 
于 2020-05-30T11:35:22.463 回答
-1

Ubuntu 18.04LTS:当我完全卸载以前的版本并安装 4.2.6 时出现问题

经过小时的谷歌搜索,我解决了另一个问题

MongoDB 无法启动 - ***在 fassert() 失败后中止

我对无法连接到服务器的问题感到绝望,因为一切似乎都很好。

最后,我决定重新启动操作系统并猜猜是什么...... BINGO

sudo mongo // works like a charm
于 2020-05-24T19:56:37.330 回答