【问题标题】:Mongorestore: ns name too long, max size is 128Mongorestore:ns 名称太长,最大大小为 128
【发布时间】:2013-03-24 07:33:30
【问题描述】:

我的 Mongo 数据库几乎没有自定义名称的索引,因为它们中的字段太多,无法自动生成名称而不会因“ns name too long”错误而失败。

当我尝试使用 mongorestore 从备份中恢复此数据库时,它失败并出现此错误(“ns 名称太长,最大大小为 128”)。似乎 mongorestore 试图根据它们的内容生成索引名称,而不是仅仅恢复数据库中实际使用的任何名称。

到目前为止,我想出的唯一解决方案是将 mongorestore 与 --noIndexRestore 一起使用,然后手动重新创建所有索引,但这显然是一种糟糕的方法。有没有更好的方法来解决这个问题?

我在使用 MongoDB 2.4.1 时遇到了这个问题。

谢谢。

【问题讨论】:

  • 您是否考虑在 MongoDB Bugtracker 上提交有关此问题的票?根据文档 (docs.mongodb.org/manual/reference/mongorestore) 中的描述,我认为这是一个错误。如果您使用 mongodump 创建了转储,我希望 mongorestore 应该能够再次恢复确切的状态。
  • 我也遇到了同样的问题,还评论了票。
  • 有这个问题的人可以将我们的输出粘贴到 jira 票证或 gist 中吗?我尝试在 2.0、2.2 和 2.4 中重现它并转储和恢复工作对我来说很好

标签: mongodb mongorestore


【解决方案1】:

mongorestore 在重新创建转储期间存在的索引时使用相同的名称。您可以在 2.2 及更高版本的 .metadata.json 文件中查看这些名称,在 2.2 之前,这些名称在 .system.indexes.bson 文件中(它在 BSON 中,因此您可以使用 bsondump 命令检查它)。

我发现您可能会收到此错误的一种方法是,如果您正在恢复到不同名称的数据库或集合,并且新名称比原始名称长。如果您使用原始数据库名称和集合名称,则将使用原始索引名称(自定义或默认),然后它将是合法名称。

【讨论】:

  • 感谢您注意到更长的数据库名称问题!这就是吸引我的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
  • 2010-09-30
  • 2017-07-23
相关资源
最近更新 更多