在我上次Meteor升级后,我的数据库已损坏。首先,当我尝试创建新用户时,我首先看到此错误消息(我们正在使用流星帐户):
getFile(): bad file number value (corrupt db?): run repair
然后我在另一个问题中看到我应该运行db.repairDatabase()
但是,尽管mongo shell说数据库现在没问题,但它确实没有用。上面的错误信息仍然显示出来。
所以我读了一些有关已损坏索引的内容并删除了users
集合中的索引,这显然让一切变得更糟。现在我有两个用户使用相同的电子邮件地址,Meteor不再启动了:
MongoError: E11000 duplicate key error index: meteor.users.$emails.address_1 dup key: { : "thiago@gdeahj.com" }
当我尝试删除其中一个用户时,原始错误会再次出现:
meteor:PRIMARY> db.users.remove({ _id: "cAtu2XsEXTbqL2Wvx"})
getFile(): bad file number value (corrupt db?): run repair`
幸运的是,我们仍处于开发阶段,我们可以放弃整个数据库并重新开始,但这让我对在生产环境中运行Meteor非常不安全。有没有办法在这种状态下修复数据库?
答案 0 :(得分:2)
您可以运行db.repairDatabase
尝试修复数据文件 - 但请先阅读链接页面以获取详细信息和警告。如果您之前没有使用日记功能,请确保运行日记功能,并且至少在生产环境中运行副本集。通常,在这种情况下,最好从另一个副本集成员重新同步或恢复备份而不是修复。您可以从MongoDB手册中找到有关this article中数据恢复的更多信息。