MongoDB问题汇总
Posted X胖胖虎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB问题汇总相关的知识,希望对你有一定的参考价值。
问题总结
问题1:在更新apt-get(sudo apt-get update)时大部分包都忽略或错误
解决方法一:(容易)
1、找到设置 2、软件和更新 3、选择其他站点 4、选择最佳服务器 5、重新在终端执行命令。(以下为在ubuntu20,ubuntu16在桌面右上角可找到设置及软件和更新)
等进度条完成之后
然后重新在终端执行命令即可。
解决办法二:换源
如果还不行的话,可以尝试手动换源(推荐清华源和阿里云源)
阿里巴巴开源镜像站:https://developer.aliyun.com/mirror/
换源步骤:(这里以阿里云源为例子)
首先备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
打开sources.list文件修改,在文件最前面添加阿里云镜像源:
sudo vim /etc/apt/sources.list
在文件的最前面加入:(按红圈中标志复制全部)
刷新列表
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
还有可能是Ubuntu版本较老的原因,因为ubuntu16已经不维护了,可考虑省级ubuntu18和20,
但记得做好快照,以防万一发生意外可以恢复原状。
问题2:
或者
**原因:**文件权限问题,用户mongod没有对必需文件的写权限,导致数据库服务不能启动。
解决办法:
sudo systemctl stop mongod
sudo chown -R mongodb /home/hadoop/mongodb (赋予权限)
sudo systemctl start mongod
即可解决
如果操作完还是解决不了,可尝试重启linux,再启动mongodb
reboot
sudo systemctl start mongod
问题3:
如果出现报错:Failed to start mongod.service: Unit mongod.service not found.
解决方法:
-
首先执行:
sudo systemctl daemon-reload
-
然后再启动,还是报错可以按以下步骤继续处理
sudo vim /etc/systemd/system/mongodb.service
添加以下内容保存后再重启mongodb
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
问题4:
执行apt install/update时出现E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
解决方法:
首先确认是否有更新任务在运行,如果有等待其他更新任务完成或结束更新任务,否则执行以下命令:
sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a
sudo apt update
报错总结
报错1:“Error parsing YAML config file: yaml-cpp: error at line 2, column 13: illegal map value”
原因:mongodb 3.0之后配置文件采用YAML格式,这种格式非常简单,使用:表示,开头使用“空格”作为缩进。需要注意的是,“:”之后有value的话,需要紧跟一个空格,如果key只是表示层级,则无需在“:”后增加空格(比如: systemLog:后面既不需要空格)。按照层级,每行4个空格缩进,第二级则8个空格,依次轮推,顶层则不需要空格缩进。如果格式不正确,将会出现上面的错误
解决办法:
在修改配置文件mongod.cfg等时,修改缩进,按照层级,每行4个空格缩进,第二级则8个空格,依次轮推。
报错2:mongosh没有安装导致的mongosh命令不可用
解决办法:
安装 mongosh
MongoDB的Shell工具mongosh
是一个全功能的javascript和Node.js的14.x REPL与MongoDB的部署交互环境。我们通过它可以直接对数据库进行查询和操作。这个工具是需要在安装玩MongoDB后单独安装的,可以自己在MongoDB官网下载页面寻找对应的版本(ubuntu/windows/…)进行下载安装:
- https://www.mongodb.com/try/download/shell?jmp=docs
技巧1:Windows下查看某个端口被谁占用
1、打开命令窗口(以管理员身份运行)
开始–>运行–>cmd
2、查找所有运行的端口
输入命令:
netstat -ano
技巧2:Ubuntu查看端口使用情况,使用netstat命令
查看已经连接的服务端口(ESTABLISHED)
netstat -a
查看所有的服务端口(LISTEN,ESTABLISHED)
netstat -ap
查看指定端口,可以结合grep命令:
netstat -ap | grep 8080
也可以使用lsof命令:
lsof -i:8888
若要关闭使用这个端口的程序,使用kill + 对应的pid
kill -9 PID号
查看所有的服务端口(LISTEN,ESTABLISHED)
netstat -ap
查看指定端口,可以结合grep命令:
netstat -ap | grep 8080
也可以使用lsof命令:
lsof -i:8888
若要关闭使用这个端口的程序,使用kill + 对应的pid
kill -9 PID号
ps:kill就是给某个进程id发送了一个信号。默认发送的信号是SIGTERM,而kill -9发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。
以上是关于MongoDB问题汇总的主要内容,如果未能解决你的问题,请参考以下文章