我收到以下错误:
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
但仍然有同样的问题。
sudo service mongod restart
为我工作
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
您是否在运行 mongo
之前运行了 mongod
?
我按照 http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/ 中的 mongodb 安装说明进行操作,只有在使用 mongod
实际运行 mongo 进程之前运行 mongo
时,我才遇到与您相同的错误。我认为安装 mongodb 也会启动它,但在执行其他任何需要 mongodb 的操作之前,您需要使用 mongod
手动启动它。
mongo.exe
应该是启动数据库的那个。
这是因为 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
希望这对您有所帮助。
sudo service mongod stop
和 sudo service mongodb stop
,因为有些人可能仍在运行它们。
日志表明 mongodb 正在终止,因为有一个旧的锁文件。
如果您不是并且没有运行日志,请删除锁定文件,运行修复,然后再次启动 mongodb。
如果您正在或曾经在开启日志的情况下运行,请参阅 the relevant Mongo DB docs。请注意,他们说“如果您使用日记功能运行,则不应进行修复以恢复到一致的状态。”所以如果你在写日记,修理可能会让事情变得更糟。
尝试
sudo service mongodb start
这解决了我的问题。
sudo service mongod start
和 sudo service mongodb start
有什么区别
苹果系统
如果你有 mac 并使用 mongodb4.4,你可以运行:
brew services start mongodb-community@4.4
检查您的文件系统可用空间,如果它更少,请增加它。这也可能导致 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
尝试在 mongo
之前运行 mongod
。
sudo /usr/sbin/mongod
在我的 openuse 上
这解决了我的问题,
所以首先你必须通过以下命令删除 mongod.lock 文件
sudo rm /var/lib/mongodb/mongod.lock
然后通过发出以下命令重新启动 mongo 服务
sudo service mongod restart
在 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
这个解决方案对我有用。
您可以使用 netstat -anp | grep 27017
检查该端口是否正在被另一个进程使用。
为了将来参考,请按照以下步骤避免类似错误:
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
https://i.stack.imgur.com/vdsr6.png
2号航站楼:
mongo
https://i.stack.imgur.com/0YYqY.png
还要确保在终端中启动 mongod 时不会出现以下拼写错误:这是不正确的
mongo d
发出以下错误:无法连接到 127.0.0.1:27017,在(轮询后检查套接字是否有错误),原因:连接被拒绝
这是对的:
mongod
(mongo 和 d..mondod 之间不应有空格
最后始终记住,在终端上运行 mongo 之前必须运行 mondod。
第一次尝试:
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
这对我有用:
sudo rm /var/lib/mongodb/mongod.lock
sudo service mongodb restart
在终端中运行这些命令
1)
$ sudo service mongod start
2)
$ mongo
我关注了 http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ 的文档。
配置并重新启动后,我执行 sudo service mongod start
并得到 ... [FAILED]
。
最后,我发现 mongod
已经启动。我认为 yum install
将其添加到自动启动中。
要检查您的 mongod
是否正在运行: service mongod status
。
希望这可以帮助有同样问题的人。
经过多次尝试,我终于解决了问题......
Step 1: ps aux | grep mongo
Step 2: sudo rm /var/lib/mongodb/mongod.lock
Step 3: sudo mongod --repair
Step 4: mongo
此错误可能是由 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 服务。
我有 mongo 3.2.1 版,必须从 /data/db/
中删除锁定文件,然后运行 mongod
并成功启动。
>rm /data/db/mongod.lock
>mongod
在我的 Windows 操作系统的数据目录中删除 mongod.lock 后,它仍然显示相同的错误消息。我必须使用 --dbpath 运行 mongod 才能使 mongo 命令运行时没有错误。
虽然收到了答案,但我希望在 MongoDB
中讨论网络错误。
https://lh3.googleusercontent.com/HJnIrLrd4gm35QhZZfacjLtb7TkNZ2wdbQgxq2iZIc5Z9UCcf5entavFy-5m7iFojDQVynpMxj2NYT_U3dAcT-6Aek8O4m5TDfxoCVEfkn01sboUP7BgIib7BrH9JPG35xRFfl5cS2SUDH_tKVoQ4uGaQ3iiBeJhxP4CewBNGyfe44xSSX7gGh_wLnLplzNNbjDOuR5n_QNh3X23Ngh2hM6X7MGzdL4oR2pIy2ReHXSKp0f-citqdSJabig3puMFyx_hvCdrQUzcW5fX2rGlHad8vXs8bbEV_OQBesPAiczoJ6ifKMI-CDwFM94dBaQXGM3Y5iSkTNCWeZ6BWnL5LFxneY2ygEMjZzBuxDZSQyZnKBbSYmyUgDe_9OVmaQ7KVzJm9opwY-rgWjKZ1952rarW9gNxuqkG5bdx-pbL-VaDrXgBf2Cee7tBc2OGXdISLO8fgeT6eDddMavOlEStTKlpt55P1do-SNDtEzbjc0mA-z4vMoZApl3kS99ZNU1kDC-mYnkSSi5bsu442p4ET2I2v3PJODOwJa6xHn0_iaGNNMPe-RxPHDshiAre0qUiqCKfwmuZH8uUZQ2n2aPnkUX5XemyNekycbqAucXXbCnkG8b4=w514-h158-no
设置安全写入关注点并不是确保我们安全的完整证明方法。让我们假设 w=1
& j=true
已设置,如果没有收到来自服务器的写确认怎么办?好吧,很可能是它没有发生,但它可能已经发生了。发生这种情况的原因是存在网络错误 - 我们可能无法收到肯定的响应。因此,我们可以通过选择语言的驱动程序从应用程序发送请求。 mongod
可以成功完成它,然后可能会进行 TCP 重置,并且网络实际上可以以我们从未收到响应的方式重置。所以,我们可能会得到一个错误,并且在这个错误上,我们可能会假设我们得到了一个错误。它没有发生,但它可能会发生。
对于插入,可以防范它。这是可能的,因为如果我们让驱动程序创建 _id
并执行插入 - 那么我们可以多次执行该插入,这将是任何伤害。因为,如果我们第 1st 次执行此操作并收到错误,并且由于网络错误而不确定该插入是否完成,那么我们可以再次执行此操作。如果我们再次执行它,请使用确切的 _id
执行它。最坏的情况是当我们尝试插入它时会得到一个重复的键错误。
但是,更新是问题发生的地方。特别是对物品无效的更新,例如包含 $ink
命令。所以,我们告诉数据库增加某个字段。那么在这种情况下,如果我们遇到网络错误并且我们不知道更新是否发生。现在,也许我们对值有足够的了解,可以通过它们检查更新是否发生,这很好。但是如果我们不知道该字段在数据库中的起始值,那么我们就不可能知道它是否发生在网络错误的情况下。这种问题在网络良好的情况下极为罕见。
如果我们真的需要不惜一切代价避免它,我们需要做的是打开我们所有的更新插入,通过从数据库中读取文档的完整值然后可能删除它并再次插入它或者只是插入一个新的。
即使写入成功,应用程序也可能收到错误返回的原因:
应用程序和服务器之间的网络 TCP 连接在服务器收到写入后但在发送响应之前被重置。
MongoDB 服务器在接收写入和响应写入之间终止。
网络在写入时间和客户端收到写入响应之间发生故障。
这对我有用要停止使用 mongodb:
use admin
db.shutdownServer()
并重新启动:
sudo service mongod restart
在环境变量中将 bin 添加到 PATH 有帮助。
转到安装路径并将 ../bin 复制到 Windows 环境变量中的 PATH 变量中
键入 windows+r 并输入以下内容
services.msc 启动 MongoDB
现在在 mongo.exe 所在的相应路径中的 cmd 中键入“mongo”,它将开始工作。
1.在d盘D:/data/db新建文件夹
2.在 D:/data/db 上打开终端
3.键入mongod并输入。
4.键入mongo并输入。
而你的 mongodb 已经分层了............
只需从 C:\Program Files\MongoDB\Server\4.0\bin
运行 mongod --repair
这是文档https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/
简单跑两点赞
sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --repair
我遇到了类似的错误,但根本原因不同。使用自制软件安装 mongodb 后。 https://docs.mongodb.com/manual/installation/ 在终端上发出“mongo”命令之前,我必须启动“mongod”服务。
如果您使用的是 OS X 系统,则没有 service
命令。因此您将无法执行 sudo service mongod start
。
查看此答案 https://unix.stackexchange.com/a/155746 以获得更多帮助!
错误:无法连接到服务器 127.0.0.1:27017
这是 WINDOWS 用户在此处输入代码的解决方案 1. 创建目录:
mkdir c:\mongo\data\db
安装服务:首先用cd进入MongoDB程序文件中的bin目录
mongod.exe --install --logpath
启动 MongoDB:net start MongoDB
4.启动Mongo Shell:
`c:\mongo\bin\mongo.exe` or
转到直到 bin 并输入 mongo
注意:在管理员模式下打开终端
不定期副业成功案例分享
/data/db/mongod.lock
而不是/var/lib/mongodb/mongod.lock