mac下mongodb的一系列问题

来源:互联网 发布:匡威帆布鞋淘宝店代理 编辑:程序博客网 时间:2024/06/06 02:33

用mongodb也有一段时间了,平时没碰到问题时还好,一碰到问题解决起来就可能需要花不少时间,于是今天我就想把我遇到过的一些问题总结一下。

安装

推荐使用homebrew安装,mac可以用homebrew安装很多软件,比如mongodb直接用 brew install mongodb就可以安装了。

注意安装成功后给的提示

To have launchd start mongodb now and restart at login:  brew services start mongodbOr, if you don't want/need a background service you can just run:  mongod --config /usr/local/etc/mongod.conf

根据这段提示,你可以用

brew services start mongodb

来启动mongodb的服务,之后输入

mongo

就可以连接上mongodb数据库了.


数据库崩溃或异常退出

如果你的数据库崩溃或者异常退出之后,你输入mongo之后出现

MongoDB shell version v3.4.10connecting to: mongodb://127.0.0.1:270172017-11-19T21:38:54.623+0800 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused2017-11-19T21:38:54.623+0800 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :connect@src/mongo/shell/mongo.js:237:13@(connect):1:6exception: connect failed

你可能尝试过了删除mongodb,然后重装,或者输入brew services restart mongodb重启mongodb等操作.但是都无法解决这个问题。

问题在于你的mongodb异常关闭的时候生成了一个mongod.lock文件,这个文件把mongodb锁住了,也就无法连接了,你只需要删除这个文件及可.

那么这个文件在哪里呢,默认的是在根目录下面

输入cd /  先进入根目录输入ls    查看目录下的文件如果有data这个文件夹,就 cd/data/db ,然后sudo rm mongod.lock删除这个文件如果没有data这个文件夹,mkdir -p /data/db 创建这个文件夹chown `id -u` /data/db 为这个文件夹配置权限再次发生错误时生成的mongod.lock就在这个位置

如果你自己配置了目录,就去配置的目录里面删除这个文件及可

mongodb启动失败

给的错误信息是这样的:

2017-11-19T21:35:28.790+0800 I CONTROL  [initandlisten] MongoDB starting : pid=86772 port=27017 dbpath=/data/db 64-bit host=fengcherendeMBP.lan2017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten] db version v3.4.102017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten] git version: 078f28920cb24de0dd479b5ea6c66c644f6326e92017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2m  2 Nov 20172017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten] allocator: system2017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten] modules: none2017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten] build environment:2017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten]     distarch: x86_642017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten]     target_arch: x86_642017-11-19T21:35:28.792+0800 I CONTROL  [initandlisten] options: {}2017-11-19T21:35:28.793+0800 E NETWORK  [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock Permission denied2017-11-19T21:35:28.793+0800 I -        [initandlisten] Fatal Assertion 28578 at src/mongo/util/net/listen.cpp 1952017-11-19T21:35:28.793+0800 I -        [initandlisten] ***aborting after fassert() failure

进入根目录下面,去tmp文件夹里面删除mongodb-27017.sock这个文件

cd / 进入根目录rm tmp/mongodb-27017.sock权限不够用sudo rm tmp/mongodb-27017.sock