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问题汇总的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB问题汇总

MongoDB问题汇总

怎样revert(使恢复原状)掉之前的提交到仓库的内容?

MongoDB在不同文档中汇总数组中的项目数?

MongoDB命令汇总

MongoDB命令汇总