Meteor: 意外的 MongoDB 退出代码为 null。正在重新启动。这是什么意思?

4
标题已经很明确了——当我尝试启动新创建的Meteor应用程序时,代理启动时会出现这个问题,并且我收到无法启动Mongo服务器的消息。
我已经创建了一些交换空间(在唯一与该问题相关的其他线程中提到),甚至重新安装了它 - 没有进一步的成功。奇怪的是,在我的普通笔记本电脑上可以运行。我遇到麻烦的笔记本电脑是Pentium III,配备1GB RAM,也许这很重要。
有什么想法吗?机器太旧了吗?
编辑:
我的设置: Thinkpad T23,PIII 1.13 GHz,1GB RAM。 Debian Stretch / testing,Linux Kernel 4.1.0-1-686-pae 我的日志:
[[[[[~/Server/sample]]]]] =>已启动代理。 意外的mongo退出代码为空。重新启动。 意外的mongo退出代码为空。重新启动。 意外的mongo退出代码为空。重新启动。 无法启动Mongo服务器。

你能在启动 Meteor 应用程序时发布日志和错误吗? - Literally Illiterate
好的,我会尽力。请参见主要问题。 - freistil90
4个回答

4

这个命令将会重置你的数据库

meteor reset


昨天已经试过了,结果没有任何不同。我的意思是为什么要重置,数据库甚至无法启动。 - freistil90
这对我来说解决了问题。 - MastaBaba

2

我认为你对机器太旧的怀疑是正确的。

您可以尝试在RAM为512MB的DigitalOcean droplet上构建Meteor应用程序来重现相同的错误。在另一台配置相同但RAM为8GB的机器上,应用程序可以无错误构建。


它肯定不能在521mb的droplet上运行。 :( - cenk

2

只需在连接字符串中删除 @w=majority 参数即可。


2
你尝试过设置你的 LANG 环境变量了吗?就像在Mongo can't be started when starting Meteor中所示,它解释了以下内容:

<snip>

如果你遇到如下错误:

terminate called after throwing an instance of 'std::runtime_error'
what():  locale::facet::_S_create_c_locale name not valid
Unexpected mongo exit code null. Restarting.
...
Can't start Mongo server.

这个解决方案很简单,但并不容易知道:

你没有在当前的shell中设置LANG变量。

在手动启动meteor之前或在你的配置文件中永久设置LANG环境变量。

export LANG=C
export LC_ALL=C

现在您可以运行Meteor,它应该能够启动Mongo开发进程。

</snip>

这值得一试。希望有所帮助。

文件甚至不存在 - 它只有在mongoDB实际启动至少一次时才会生成。此外,正如你所看到的,它的退出代码是100,而不是null。 - freistil90
好主意,但是没有起作用。有没有类似日志的地方记录这个问题? - freistil90
我不确定关于LANG环境变量的日志,但你可以看一下/var/log下的日志。可能是/var/log/syslog或/var/log/messages,但我不确定。当我谷歌搜索“_S_create_c_locale name not valid”时,在相关的SO帖子https://dev59.com/k2Ik5IYBdhLWcg3wn_f1上找到了一些信息,所以我会更新我的答案来反映这种方法。 - Chip Castle
思考更多后,我在想你是否可以尝试使用gdb进行调试。确定运行meteor的pid,然后发出gdb attach pid命令。在https://dev59.com/HnE95IYBdhLWcg3wb9hb中还有更多的替代方案。 - Chip Castle
我明白,我明白...但是没有帮助 :/ 我不理解这些错误信息,事实上,我根本就没有收到任何错误信息。这真的只是我在起始帖子中写的内容。哈哈,等等,我会尽力用gdb调试。 - freistil90
我的错误。我太过于仔细地阅读了自己的答案,而不是你的原始问题。我已经没有更多的想法了,所以你可以尝试使用gdb并在这里发布任何结果。 - Chip Castle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接