V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
gitopen
V2EX  ›  MongoDB

mongodb 在 createIndex 时报错

  •  
  •   gitopen · Mar 2, 2020 · 6677 views
    This topic created in 2247 days ago, the information mentioned may be changed or developed.

    如下图所示,name 为 interdisciplinary 的 db 中有一个 collection,该 coll 共有 41443963 条数据,有一个 field 名为 keywords,就是在给 keywords 创建索引时,报错。keywords 的值是长度不长(小于 5 )的 array,存储一些关键词。 各位大神,有哪位知道哪里出了问题了吗?图中的错误是什么引起的呢?谢谢。 报错截图

    Supplement 1  ·  Mar 2, 2020

    不知道怎么回事,图片在我这里可以显示出来 报错图片链接 报错图片

    Supplement 2  ·  Mar 2, 2020

    新浪图床不行啊~ 直接把链接放在这里吧! https://sm.ms/image/cEWjy5CgFtXJQm7 QQ20200302-184805@2x.png

    Supplement 3  ·  Mar 3, 2020

    UPDATE 昨晚--repair完毕以后,那个coll少了104条数据,猜测是多线程操作pymongo写入数据时,它们出现了问题。然后单线程重新处理一下数据,发现createIndex没有出现错误,也没有crash。问题应该是多线程写数据时,导致部分数据损坏。供大家参考。

    6 replies    2020-03-03 11:27:30 +08:00
    rrfeng
        1
    rrfeng  
       Mar 2, 2020 via Android
    看不到图
    gitopen
        2
    gitopen  
    OP
       Mar 2, 2020
    @rrfeng #1
    gitopen
        3
    gitopen  
    OP
       Mar 2, 2020
    @rrfeng #1
    rrfeng
        4
    rrfeng  
       Mar 2, 2020 via Android
    这看起来是你数据库文件有问题啊…不像是建索引导致的错误,除非是遇到了什么奇怪的 bug。

    建议官方求助。

    试下 dump 这个 collection 能出来吗,看起来读到特定数据的时候 check sum 不对。

    是不是重复出现这个问题?这里应该直接 crash 了吧…
    gitopen
        5
    gitopen  
    OP
       Mar 2, 2020
    @rrfeng #4 对,直接 crash 了。。。我也是头一回遇见 createIndex 时出现错误,mongod 直接 crash 了。。。这会儿在--repair,看看完成后能不能正常~~~😂️感谢🙏🏻
    gitopen
        6
    gitopen  
    OP
       Mar 3, 2020
    @rrfeng #4 已经 append 了昨晚的试验,应该是多线程写入导致部分数据损坏,因此出现 checksum error,进而 crash。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5347 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:51 · PVG 11:51 · LAX 20:51 · JFK 23:51
    ♥ Do have faith in what you're doing.