创建记录时出现重复键错误

Posted

技术标签:

【中文标题】创建记录时出现重复键错误【英文标题】:Duplicate key error when creating record 【发布时间】:2016-07-13 04:51:30 【问题描述】:

这个错误真的很令人困惑。我可以创建一次记录,但无论如何第二次都会出现错误:

E11000 duplicate key error index: test_db.students.$code_1 dup key:  : null 

这是我的架构:

var Schema  = 
    "stuCode" : String,
    "firstName" : Boolean,
    "lastName" : Boolean,
    "email" : String
;

在我拥有 stuCodecode_code 之前,它必须是独一无二的。这可能会导致问题。

我尝试从该集合中删除所有数据,删除mongoose.connection.on('open', function() ); 中的集合,但问题仍然存在。我只能保存第一条记录,第二条无法保存。

这个问题的解决方案是什么?

【问题讨论】:

第二个文档的stuCode和第一个文档一样吗? @zangw - 你的意思是...... .一个重复的键? ) @MartinJames,是的,我的意思是重复的stuCode... @zangw,第二个stuCode 和第一个不一样。它是随机生成的,我已经在控制台中打印出来仔细检查。 可能建议您从stuCode 中删除唯一索引,然后再次插入这两个文档? 【参考方案1】:

在我将 stuCode 作为代码和 _code 之前,它被要求是唯一的。 这可能会导致问题。

是的,code 上的旧索引可能仍然存在,你不能删除它吗?

【讨论】:

谢谢。有用。对于将要寻找此问题的其他人来说,只需一张便条。这是删除索引的方法:Student.collection.dropAllIndexes(function (err, results) ... );

以上是关于创建记录时出现重复键错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥插入子文档数组时出现“重复键错误”?

为啥插入子文档数组时出现“重复键错误”?

Codeigniter:当我插入数据时出现重复键错误,我该如何处理这个错误?

EF 更新大量的数据时出现重复键错误

MongoDB插入引发重复键错误

使用 Laravel 迁移创建外键时出现 MySQL 错误