logo

2.6.7 版本 2分片,片建为联合索引topic_id_1_release_date_day_1_id_1_source_type_1

插入数据时使用的save接口,数据更新到4百万时,突然出现the (immutable) field ‘id’ 错误

mongos> db.tlable.save({ “_id” : “001016202649237410455615268788740782” , “data_table” : “ebusiness_201507_ng” , “match_rules” : “” , “rel_type” : “c” , “relativity” : “0” , “release_date” : ISODate(“2015-06-29T05:40:36.517Z”) , “source_type” : 7 , “title_crc” : “5392343247330290099” , “topic_id” : “10162026492374” , “uid” : “10162” , “release_date_day” : ISODate(“2015-06-28T16:00:00Z”) , “id” : NumberLong(“300899186157551616”) , “add_time” : ISODate(“2015-05-29T12:20:31.041Z”)}) After applying the update to the document {_id: “001016202649237410455615268788740782” , …}, the (immutable) field ‘id’ was found to have been altered to id: 300899186157551616

初步怀疑是更新时,同一分片的_id相同的数据,更新联合索引中的id时出错,但是小规模测试了下,_id相同的数据,联合索引中的id不同,均是成功更新的,至此无解了

4 回复
ccj
#1 ccj • 2015-07-13 22:20

1.同一分片不会有_id 相同的数据。 2._id字段不能更新。

osborn
#2 osborn • 2015-07-14 17:07

@ccj 我需要在同一个分片内更新片建字段,我的片建不是_id,而是包含id(非_id)的联合索引,在3.0版本这样做直接报错, 但是在2.4 2.6 版本少数据量测试不出问题,大数据量才出现这种错误提示

ccj
#3 ccj • 2015-07-14 21:08

@osborn 片键不能更新的。

osborn
#4 osborn • 2015-07-15 09:58

@ccj 但是这个问题在2.42.6 版本, 需要在大数据量时偶现,在3.0的话单条就可以重现,看来是低版本bug了

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。