我有一个MongoDB数据库存储特定目录中的数据,我使用Node.js进程写入它。有时我的Node.js进程会遇到强制关闭(注意被动语态),我收到此错误消息,这意味着我必须进入并简单地删除.lock文件:
2015-06-16T11:09:19.004-0700 W - [initandlisten] Detected unclean shutdown - /Users/amills001c/mongodb_sc_admin_dev_data/mongod.lock is not empty.
2015-06-16T11:09:19.013-0700 I STORAGE [initandlisten] **************
old lock file: /Users/amills001c/mongodb_sc_admin_dev_data/mongod.lock. probably means unclean shutdown,
but there are no journal files to recover.
this is likely human error or filesystem corruption.
防止这种情况发生的最佳方法是什么,所以每次启动数据库时我都不必进入并删除mongod.lock文件?
这样的东西?
process.on('SIGINT', function (msg1,msg2) {
mongoose.disconnect();
mongoose.connection.close(function (msg) {
console.log(msg);
});
console.log('SIGINT message:',msg1,msg2)
});
答案 0 :(得分:1)
与MongoDB的客户端连接不会影响mongod.lock
文件。错误消息与您的数据库服务器有关,即mongod
进程不正常地关闭。解决方案是始终干净地关闭数据库进程。
不洁净关闭应该是一种特殊情况,不会发生在您的控制之外。如果反复发生这种情况,那么您运行和管理mongod
流程的方式就会出现问题。请检查为什么发生了不正常的关机并解决了这个原因。
也就是说,您在问题中提出的客户端代码绝对是一个很好的做法。在退出时关闭与DB的连接是可取的。请也这样做。但是,它与您看到的mongod.lock
错误消息无关。这纯粹是在数据库服务器端。