mongodb插入資料出現大量報錯,報錯之前停過應用程式,也有洗掉過資料。
mongodb是單實體的。
報錯的欄位為mongodb自帶的_id, 之前理解_id 是 時間戳+主機+行程號+序列 組成。
請問時間戳是怎么來的?感覺不是讀取的應用主機的時間,如果是應用主機時間,時間戳上就不會重復,但是現在就是重復。
洗掉腳本:
db.TL_USER.remove({"CODE" : "13"});
com.mongodb.MongoWriteException: E11000 duplicate key error collection: mongo_act.TL_USER index: _id_ dup key: { : ObjectId('57eb370ba832606bf4fa9c22') }
at com.mongodb.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:523)
at com.mongodb.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:306)
at com.mongodb.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:297)
at com.cucc.ogg.Example.excute(Example.java:698)
at com.cucc.ogg.Example.productMain(Example.java:283)
at com.cucc.ogg.Example.main(Example.java:1035)
uj5u.com熱心網友回復:
1 看下_id在哪里產生的2 看看時間
> ObjectId("57eb85b6bd096390f5c634c2").getTimestamp()
ISODate("2016-09-28T08:56:22Z")
uj5u.com熱心網友回復:
是不是有自定義的唯一主鍵重復了?uj5u.com熱心網友回復:
應該是自定義的重復了,時間戳生成的id不會重復的uj5u.com熱心網友回復:
這個問題是怎么解決的,又是怎么引起的,我現在也出現這種情況,大致是flume 對同時生成的日志進行讀取。因為 sink的channel每次獲取一條日志,如果對每次獲取的日志都執行一次插入,就是一次一條則沒問題
但是如果 將這些日志進行一個累計,當獲取到的日志數目達到某一個值,則進行插入,就會出現id例外。
該怎么解決呢
uj5u.com熱心網友回復:
使用findOneAndUpdate或者update更新也會報name或者_id錯誤。但我想不明白更新為什么會出現這個問題?請大神們解解惑轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/150432.html
標籤:MongoDB
上一篇:首字母不是表名
