流星:意外的mongo退出代码100

Posted

技术标签:

【中文标题】流星:意外的mongo退出代码100【英文标题】:Meteor: unexpected mongo exit code 100 【发布时间】:2013-03-14 16:09:31 【问题描述】:

我刚刚将 Meteor 版本 0.5.9 (45fef52095) 安装到我的 CentOS 版本 6.3 (Final) 服务器(Linux 版本 2.6.32-279.19.1.el6.i686 (mockbuild@c6b8.bsys.dev.centos.org ) (gcc 版本 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Wed Dec 19 04:30:58 UTC 2012)

我在 apache 用户下以 /mnt/apshared 的形式安装到 Windows SBS 服务器的 samba 共享。我在其中创建了一个名为“webmeteor”的目录。我在“webmeteor”目录中创建了一个名为“myapp”的应用程序,所以我的目录是这样的:/mnt/apshared/webmeteor/myapp。

我以 root 身份登录。当我尝试使用 meteor 命令运行应用程序时,我收到以下错误消息:

Unexpected mongo exit code 100. Restarting.
Unexpected mongo exit code 100. Restarting.
Unexpected mongo exit code 100. Restarting.
Can't start mongod

MongoDB had an unspecified uncaught exception.
Check to make sure that MongoDB is able to write to its database directory.

我的第一个呼叫点是这个 *** 问题:Creating a new meteor.js file and get error 100, MongoDB not able to write - 但是,遵循这些建议(sudo'ing the meteor 命令,并检查我有 70GB 可用的磁盘空间)没有奏效。我很确定这些问题与权限有关。

我曾尝试将 chown 递归到 root:root(因为我以 root 身份登录),并将 chmod 递归到 777,但无济于事。

我在问你,接下来我应该尝试什么来启动我的 Meteor 应用程序?

提前致谢。

【问题讨论】:

这类似于***.com/questions/10103830/… 您可能还想尝试使用 mongod 在./meteor/local/db 手动启动数据库,这样您就可以更详细地了解可能出现的问题 在运行/usr/lib/meteor/mongodb/bin/mongod --dbpath /mnt/apshared/webmeteor/myapp/.meteor/local/db/ 之后,它确实提供了很多信息。错误是exception in initAndListen: 13651 Couldn't fsync directory 功能完备的 Meteor 版本即将发布,适用于 Windows! 【参考方案1】:

使用meteor reset 会清除数据库中的所有数据。如果您对此感到担心,请导航到您的项目文件夹。

cd /path/to/my/project

这里你需要删除mongodb.lock文件。

rm .meteor/local/db/mongodb.lock

现在您可以使用命令运行 Meteor,

meteor

【讨论】:

很遗憾,meteor reset 不起作用。项目重置,但仍然无法启动并出现同样的错误。 删除mongodb.lock 后问题仍然存在。我发现在已安装的驱动器之外运行它可以正常工作。我想我会这样做。 谢谢。我将一个应用程序复制到另一个应用程序并遇到了这个问题。删除锁定文件有效。我希望错误只是这么说。而不是 Unexpected mongo exit code 100. Restarting. 对我来说,文件被命名为mongod.lock,而不是mongodb.lock。删除它并没有解决问题,但 meteor reset 确实 我还必须删除 .meteor/local/db/journal/j.* 才能使其正常工作【参考方案2】:

看起来可以通过从不在挂载中的目录运行流星来找到临时解决方案。 Mongodb 似乎不太喜欢共享,因此您需要设置 rsync 以定期将文件从共享复制到运行流星的目录。

来源:Problems to run examples in Meteor

【讨论】:

谢谢。现在,我将研究从 Windows 机器访问文件的其他选项。 我在 Windows 上使用 Vagrant VM,最初完全没有问题。我建立了一个新的流星项目,现在有 Unexpected mongo exit code 100. Restarting. 错误。我以前的流星项目仍然可以正常工作。我按照构建流星示例待办事项应用程序下的说明here。我尝试使用lysnc 来保持自动重新加载的工作,但是遇到了问题,所以每次我从 Windows 更改代码以触发 lysnc 时都必须使用touch <file> 使用 rsync 会很不优雅。只需从共享文件夹硬链接到您的流星项目。为我工作。【参考方案3】:

我在 Vagrant 下运行流星并遇到了这个问题,在找到这个线程之前,我从 /var/lib/mongodb 中删除了我的 MongoDB 文件,因为那里也有一个 .lock,这可能需要也可能不需要,但是值得一看 MongoDB 可能位于 .meteor 文件夹旁边的其他区域。

【讨论】:

【参考方案4】:

这对我有帮助。

    我删除了 .meteor/local/db/mongod.lock 我杀死了 mongod 进程。您可以使用“ps -ef | grep mongo”找到它

【讨论】:

killall mongod 为我做了这件事……谢谢你的推动 我尝试的第一件事是上面 TimDog 的评论:killall mongod。像冠军一样工作;谢谢 TimDog。【参考方案5】:

正如其他地方所建议的,在 OS X 上运行 meteor reset 为我解决了这个问题。

警告:meteor reset 会清除本地数据库中的所有内容。

【讨论】:

【参考方案6】:

最后通过运行 export LC_ALL=C 修复了我的问题。通过本文建议的调试步骤发现错误:https://***.com/a/15752736/1820510

【讨论】:

帮助 CentOS!谢谢 在 Digital Ocean 的一个 droplet 上帮助 Ubuntu 14 这为我修好了!运行亚马逊 AWS Ubuntu 12.04 LTS export LC_ALL=C 究竟做了什么来解决这些问题?【参考方案7】:

确保该分区上有足够的可用空间。如果没有,你会得到这个错误。

【讨论】:

那是我的问题。看到这个后想通了:***.com/a/15752736/1820510。 mongod 说:“请在 ./journal 中至少提供 844MB 可用空间或使用 --smallfiles”【参考方案8】:

我遇到了类似的问题。这是因为我的项目目录是我的 Dropbox 的一部分,并且 .meteor/local/db 目录中有一些冲突的文件。删除这些解决了问题。

【讨论】:

【参考方案9】:

这个错误过去每次我重新启动流星时都会发生

rm .meteor/local/db/mongod.lock

不适合我(我正在使用 cloud9 在线 IDE)

我现在做

rm .meteor/local/db/mongod.lock .meteor/local/db/local.*

一切都恢复正常没有删除我的数据库

【讨论】:

【参考方案10】:

我可以通过删除本地 Mogo 数据库锁来恢复错误。

删除数据库锁的步骤:

    导航到您的应用程序目录(您有 Meteor 应用程序文件的位置) 删除文件 $rm .meteor/local/db/mongod.lock

如果 Meteor 应用程序仍在后台运行,则会发生错误。正在运行的应用程序或由于不正确的系统/应用程序关闭以及同一应用程序的第二个实例无法释放数据库锁。所以每次都要小心退出应用程序。

【讨论】:

【参考方案11】:

我遇到了同样的问题,我解决了更改 .meteor 文件夹(MongoDB 所在的位置)的所有权

cd path-to-meteor-app
sudo chown -R youruser:yourgruop .meteor

希望能帮助到别人!

【讨论】:

【参考方案12】:

我的机器意外关机导致了同样的问题。没有一个选项有帮助,即删除 .lock 文件或运行 export LC_ALL=C 等。我在 Ubuntu 15.04 上。我使用指向 myApp/.meteor/local/db 的 --dbpath 选项启动 mongo,并且 mongo 启动日志清楚地表明 mongo 正在尝试从 journal 文件夹中的 journal/s 恢复数据库。它正在寻找不存在的 local.1 文件。 所以我尝试了 mongo --recovery 进一步指出它在我拥有日记文件夹之前将无法工作。 这就是我所做的 1. 删除了日志文件夹(将其移动到另一个位置 - 以防万一) 2. 运行 mongo --recovery(不是 100% 确定这是否真的做了什么) 3. 启动流星 它开始时没有任何故障,猜猜我的所有数据都符合预期

【讨论】:

我刚刚做了1(删除日志)并删除了mongod.lock。这对我有用。【参考方案13】:

第一

$ rm .meteor/local/db/mongodb.lock

如果这不起作用

尽可能备份

.meteor/local/db/meteor*

$ 流星重置

然后恢复

.meteor/local/db/meteor*

【讨论】:

【参考方案14】:

我可以通过导出 LC_ALL 来修复它,我使用的是 Ubuntu

导出 LC_ALL="en_US.UTF-8"

【讨论】:

【参考方案15】:

删除此文件和文件夹对我有用:

rm -rf .meteor/local/db/mongod.lock .meteor/local/db/journal/

【讨论】:

是的 - 这里也一样。我已将项目从 Cloud 9 复制到我的本地计算机,并通过这样做修复了它。非常感谢。【参考方案16】:

我在 Windows 8.1 x64 上遇到了同样的问题:'Unexpected mongo exit code 100. Restarting.'。 而“流星重置”或“删除 mongod.lock”并没有解决它。 为了在启动 mongod 时显示错误详情,我在 run-mongo.js 文件中添加了一个 proc.stdout.on 函数:

// Let's not actually start a process if we yielded (eg during
// findMongoAndKillItDead) and we decided to stop in the middle (eg, because
// we're in multiple mode and another process exited).
if (stopped) return;

proc = spawnMongod(mongod_path, port, dbPath, replSetName);

// added this 3 lines just to debug 'Unexpected mongo exit code 100. Restarting.'
proc.stdout.on('data', function (data) 
  console.log('stdout: ' + data);
);

然后我得到了明确的错误:

*********************************************************************
ERROR: dbpath (C:\Users\Pierre-André\Desktop\Pal\Meteor\simple-todos\.meteor\local\db) does not exist.
Create this directory or give existing directory in --dbpath.
See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************

错误表明 db 目录不存在。然而,它存在。 问题是我在路径中有一个特殊字符(我名字中的重音 é)。我将我的流星项目文件夹移动到磁盘中的另一个位置,该路径没有重音,并且工作正常。

希望这会有所帮助。

run-mongo.js 文件位于我的电脑中:C:\Users\Pierre-André\AppData\Local\.meteor\packages\meteor-tool\1.1.10\ mt-os.windows.x86_32\tools\runners

解决问题后不要忘记删除这3行,否则每次加载项目时都会有很多控制台日志。

【讨论】:

我在 Windows 上遇到了这个确切的问题 (C:\Users\Fernando García\Proyectos\...);这应该是一个 Mongo 错误... 因为你的用户名是不规则字符。【参考方案17】:

解决了!在我的情况下,deleting meteor/local/db/mongodb.lockmeteor reset 解决了这个问题。

谢谢大家!

【讨论】:

小心使用这个命令。我没有意识到它擦除了我的数据库!【参考方案18】:

如果你已经全局安装了 Mongo,那么一定要删除 /db/journal 文件夹中的所有 prealloc 文件。

对于 Ubuntu,/db/ 文件夹通常位于 /data,因此完整路径是 /data/db/journal。对于其他操作系统,这可能会有所不同。

【讨论】:

【参考方案19】:

如果您收到类似的通知

Local folder has run out of space

试着去

cd .meteor/local/bundler-cache/

并删除该目录中的所有内容。它是一个缓存,所以它不应该影响太多。有时它似乎会不受控制地增长。

编辑

结合所有其他答案尝试

rm -rf .meteor/local/db/mongod.lock .meteor/local/db/local.* .meteor/local/db/journal .meteor/local/bundler-cache/linker/

如果这仍然不起作用,您可能需要释放磁盘上的一些空间。通过检查来做到这一点

free -m

或查看您的 inode 以及使用了多少空间

df -h

【讨论】:

【参考方案20】:

我有同样的错误,我解决了它只是改变了目录的名称 companeros for companeros ...我知道这对初学者来说是一个错误,但我必须告诉这一点以帮助人们。 C:\nube\MEGA\cursos\coursera\CursowebResposivaEjemplos\compañeros\meteor_portfolio_website 不起作用 C:\nube\MEGA\cursos\coursera\CursowebResposivaEjemplos\companeros\meteor_portfolio_website 工作正常。

【讨论】:

【参考方案21】:

我通过修改 /usr/local/lib/meteor 文件解决了这个问题。

在这个 bash 脚本中添加“export LC_ALL=C LANG=C”


#!/usr/bin/env bash

导出 LC_ALL=C LANG=C

BUNDLE_VERSION=0.5.16


【讨论】:

【参考方案22】:

为我工作: 我将项目移动到另一个目录,因为我有 Windows 8.1。我在桌面目录中有项目,将项目更改为C:\meteor\project

【讨论】:

【参考方案23】:

当我第一次在我的新笔记本电脑(Windows 10)中安装 node 和流星时,我偶然发现了这个问题。我没有对默认安装进行任何更改。

Meteor 重置或从 .meteor/local/db 删除文件对我不起作用,因为我正在创建新的应用程序以在本地运行并且目录为空。所以,我可以创建它们,但它们没有运行。还尝试使用较旧的流星版本创建应用程序,也失败了。

解决在我的情况下,通过将目录更改为 c:\

cd c:\

流星创建testApp

这个目录也适用于我从我的电脑传输的预先存在的应用程序。我想这与 NFS 文件系统有关,我对这一切都很陌生,所以如果有人能解释更多关于它的信息,我很想了解更多。无法使用所有可能的目录来存储我的应用程序已经令人沮丧

【讨论】:

【参考方案24】:

当我第一次在我的新笔记本电脑(Windows 10)中安装 node 和流星时,我偶然发现了这个问题。我没有对默认安装进行任何更改。

Meteor 重置或从 .meteor/local/db 删除文件对我不起作用,因为我正在创建新的应用程序以在本地运行并且目录为空。所以,我可以创建它们,但它们没有运行。还尝试使用较旧的流星版本创建应用程序,也失败了。

解决了在我的情况下,通过将目录更改为 c:\

cd c:\

meteor create testApp

这个目录也适用于我从我的电脑传输的预先存在的应用程序。我想这与 NFS 文件系统有关,我对这一切都很陌生,所以如果有人能解释更多关于它的信息,我很想了解更多。无法使用所有可能的目录来存储我的应用程序已经令人沮丧

【讨论】:

【参考方案25】:

我在 Windows 10 上使用 Meteor 1.4 时遇到了这个问题。但是,我正在 Ubuntu 安装上开发相同的流星应用程序。对我来说,问题是由于 Mongo 3.2 在 Windows 和 Ubuntu 上的实现方式不同造成的。我的 64 位 Ubuntu 安装使用 WiredTiger。然而正如流星中所说的documentation:

If you are using Windows or 32bit Linux, you can update your development
database to 3.2, however it will continue to use the MMAPv1 storage 
engine, as the 32bit MongoDB binary does not support WiredTiger.

在 Windows 上使用 meteor reset 从 Ubuntu 中删除 WiredTiger 格式数据库,然后使用旧的 MMAPV1 引擎对其进行重建。这解决了退出代码 100 错误。

【讨论】:

【参考方案26】:

对于那些在 Windows(Linux/WSL 的 Windows 子系统)上使用 bash 的用户,我发现在 /mnt 目录之外创建流星应用程序可以解决问题。

当我在 /mnt/c/Workspace 的工作区中安装它时,它每次都失败。 但是,一旦我将它安装在主目录 (~) 中,它就会第一次运行。 Here's the image.

【讨论】:

你是如何在 Windows 中使用你的驱动器的? @insidesin 我已经放弃让它在 WSL 上运行。直接在 Windows 中安装我的整个堆栈(meteor、mongodb 等)更省时 您是否对要在 Windows 中编辑的文件进行符号链接?那是怎么失败的?我可能会和你走同样的路:(

以上是关于流星:意外的mongo退出代码100的主要内容,如果未能解决你的问题,请参考以下文章

android目标:android:命令失败,退出代码为enoent Meteor

QXDM安装执行失败(意外退出代码:-1073741515)问题

fontComboBox QSettings 应用程序意外退出

Flutter 意外退出,读取依赖时出错

使用代码0xC0000417(无效的C运行时参数)退出意外的程序

Qt - 意外的 GDB 退出