我正在尝试在我的Windows XP SP 3机器上设置MongoDB 1.6.3。
我遵循了MongoDB wiki的指示。我可以看到Windows服务已安装但尚未启动。
可执行文件的路径如下所示:
"C:\Tools\mongodb-win32-i386-1.6.3\bin\mongod" --bind_ip 127.0.0.1 --logpath c:/mongodb/logs/mongodb.log --logappend --dbpath "c:/mongodb/data" --directoryperdb MongoDB --service
当我尝试启动服务时,我收到一条错误弹出窗口,显示以下消息:
错误1053:服务未及时响应启动或控制请求。
分别将dbpath
和logpath
改为c:/data/db
和c:/data/logs/mongodb.log
,但结果是一样的。
我已经检查过以确保所有目录和文件确实存在 - 不用担心。
我刚刚在美国东部时间下午1点18分再次尝试,得到了同样的错误,并在日志文件中看到了这个:
Sun Sep 26 13:18:15 dbexit:
Sun Sep 26 13:18:15 shutdown: going to close listening sockets...
Sun Sep 26 13:18:15 shutdown: going to flush oplog...
Sun Sep 26 13:18:15 shutdown: going to close sockets...
Sun Sep 26 13:18:15 shutdown: waiting for fs preallocator...
Sun Sep 26 13:18:15 shutdown: closing all files...
Sun Sep 26 13:18:15 closeAllFiles() finished
Sun Sep 26 13:18:15 dbexit: really exiting now
所以我相信日志文件设置正确并且工作正常,但我得到的信息没有帮助。
还有一点:如果我打开一个命令shell并在命令行启动它,我可以毫无问题地运行MongoDB。
任何关于我出错或更正的建议都将不胜感激。
如果logpath
或dbpath
中的某个目录不存在,则无法启动。因此,请确保路径指向现有目录。
如果路径确实存在,请检查日志文件以获取有关出错的更多信息。
当我尝试使用Visual Studio调试它时,我能够重现该问题并注意到错误代码0xc0000417
。这是一个STATUS_INVALID_CRUNTIME_PARAMETER
错误,这意味着将无效参数传递给C运行时函数。
正如您所发布的那样,可执行文件的路径是:
C:\Tools\mongodb-win32-i386-1.6.3\bin\mongod" --bind_ip 127.0.0.1 --logpath c:/mongodb/logs/mongodb.log --logappend --dbpath "c:/mongodb/data" --directoryperdb
MongoDB
--service
现在,当我尝试从命令提示符运行可执行文件时,它失败并显示以下消息:
命令无效:MongoDB
我在上面的路径中突出显示了这个错误的'参数'。它是传递给serviceName
参数的参数,但是--serviceName
指令本身被错误地省略了。正确的路径应该是:
C:\Tools\mongodb-win32-i386-1.6.3\bin\mongod" --bind_ip 127.0.0.1 --logpath c:/mongodb/logs/mongodb.log --logappend --dbpath "c:/mongodb/data" --directoryperdb
--serviceName MongoDB
--service
您可以通过更改以下密钥中的ImagePath
来编辑注册表中可执行文件的路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB
另一种选择是在安装过程中简单地省略serviceName
参数,因为MongoDB's service support is still flawed。
我遇到了同样的问题并尝试了一些方法。最后我得到了这个问题的解决方案。
1.请检查系统组件涉及Visual Studio 2015的C ++ Redistributable的环境
2.i再次安装为Visual Studio 2015命名为C ++ Redistributable的组件,最后解决此问题。