我刚刚安装了mongo 3.并尝试将其作为Windows服务器运行但收到错误
The MongoDB 3.0 service terminated with the following service-specific error:
Cannot create another system semaphore.
无法找到有关该错误和mongodb的任何信息。
答案 0 :(得分:28)
检查mongodb日志。在我的情况下,mongodb无法从mongod.cfg找到目录
答案 1 :(得分:17)
在我的情况下,在意外关闭后,它似乎是mongod.lock问题。
Detected unclean shutdown - E:\MongoDb\Databases\mongod.lock is not empty.
我删除了E:\ MongoDb \ Databases \ mongod.lock并成功启动了mongo。
答案 2 :(得分:2)
这件事发生在我身上几次,因为我的Mac崩溃导致Parallels和我的Mongo实例不干净关闭。 mongod.lock不是空的。
这是在开发服务器上,所以我没有备份。我可以使用
进行修复mongod --repair --repairpath <path to your mongo data>
更多说明here
答案 3 :(得分:2)
在Program Files中的Windows 10上安装.msi后,我为不同的数据位置创建了服务C:\ Mongo \ Data \ DB
服务安装正确,但没有以错误“无法创建另一个系统信号量”开头,因为:
我没有创建所需的文件夹结构。简单就是那样 - d'oh!
希望这有助于某人。
答案 4 :(得分:2)
在 Windows 中:
有一种解决此问题的有效方法。
首先,尝试删除文件夹“ D:\ mongodb \ data”下的文件storage.bson
,或PC中的相应路径。
如果问题仍然存在,请尝试按顺序执行以下步骤。
例如,已安装mongoDB 3.6版,MongoDB的安装路径为“ D:\ Program Files \ MongoDB”。
创建文件夹D:\mongodb\logs
,然后在此文件夹中创建文件mongodb.log
。
以管理员的身份运行cmd.exe,
D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
删除文件夹“ D:\ mongodb \ data”下的这两个文件mongod.lock
和storage.bson
。
然后使用管理员权限在cmd中键入net start MongoDB
,此问题将得到解决。
答案 5 :(得分:1)
还要检查dbpath和logpath的权限。在我的例子中,我将mongo配置为运行为网络服务的服务,但是没有给予网络服务对这些目录的写访问权。
答案 6 :(得分:1)
如果这有助于其他任何人,对我而言,我在命令提示符窗口中手动启动了mongod.exe,因此Windows服务无法在已使用的同一端口上运行mongod.exe。卫生署!
答案 7 :(得分:1)
我有同样的问题,在我的情况下,配置是错误的。来自事件查看器的这个错误不是很有帮助,而且大多令人困惑,所以每个人都应该首先检查mongo日志。
答案 8 :(得分:1)
在光盘C上没有足够的空间:安装MongoDB的地方。制作一些空间后 - mongod.exe成功启动。
答案 9 :(得分:0)
就我而言,MongoDB的另一个实例在命令提示符下运行在同一个端口上。
答案 10 :(得分:0)
对我来说,在Windows 10 Pro上全新安装MongoDB v4.0.3时,安装最终未能启动mongo服务。
尝试从命令提示符启动mongod,指向正确的mongodb.cfg
配置,给我错误:
无法识别的选项:mp
我撕开配置并搜索“ mp”,以找到文件的最后两行:
#snmp:
mp:
我在最后一行的前面加了#号,然后再次尝试,服务开始正常。
¯\ _(ツ)_ /¯