gpt4 book ai didi

javascript - 重启后等待MongoDB准备就绪的正确方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 13:32:06 24 4
gpt4 key购买 nike

我有一个失败的 bash 脚本。经检查,故障原因是MongoDB重启后立即访问。

例如,运行:

mongo --eval "db.version()"

给出预期的输出:

MongoDB shell version: 2.4.9
connecting to: test
2.4.9

运行时:

service mongodb restart; mongo --eval "db.version()"

产生以下输出,强调我的:

mongodb stop/waiting
mongodb start/running, process 1466
MongoDB shell version: 2.4.9
connecting to: test
Sat Oct 25 02:52:29.736 Error: couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145
exception: connect failed

因为服务器还没有准备好。

在执行 bash 脚本期间等待 MongoDB 真正准备好的正确方法是什么?

  • service mongodb status 不是解决方案,因为它报告的是服务的状态,而不是数据库本身。

  • 重复执行 nc -z localhost 27017 直到其退出代码变为 0 将起作用,但我不确定是否没有缺点(以某种方式运行无限循环?)

最佳答案

在不连接任何数据库的情况下启动 mongo 解释器:

mongo --nodb

从那里,您可以在 mongo 解释器中执行:

var conn;
try
{
conn = new Mongo("localhost:27017");
}
catch(Error)
{
//print(Error);
}
while(conn===undefined)
{
try
{
conn = new Mongo("localhost:27017");
}
catch(Error)
{
//print(Error);
}
sleep(100);
}
DB = conn.getDB("test");
Result = DB.runCommand('buildInfo');
print(Result.version);

有了上面的2,你可以把后面的部分放在像Script.js这样的文件中,然后这样做:

mongo --nodb Script.js

编辑:那里,完全忘记了你真正想要的是版本。为你解决了这个问题。

关于javascript - 重启后等待MongoDB准备就绪的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26558932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com