I get the same message error (duplicate key error index with same id on different value) when I would like to insert value after a failed.
Key exist for value 15 to 17 in MONGODB, exception will be thrown. It's normal uses case but I get the same error message, and data has not be inserted after 17, which is not the normal use case. No key has been written before for 18,19,20 and the same exception has been thrown
Do you have an idea?
ERROR MESSAGE:
15E11000 duplicate key error index: api.inventory_user.$reference_id_1_member_id_1 dup key: { : "15", : "test@test.com" }15
16E11000 duplicate key error index: api.inventory_user.$reference_id_1_member_id_1 dup key: { : "15", : "test@test.com" }16
17E11000 duplicate key error index: api.inventory_user.$reference_id_1_member_id_1 dup key: { : "15", : "test@test.com" }17
18E11000 duplicate key error index: api.inventory_user.$reference_id_1_member_id_1 dup key: { : "15", : "test@test.com" }18
19E11000 duplicate key error index: api.inventory_user.$reference_id_1_member_id_1 dup key: { : "15", : "test@test.com" }19
20E11000 duplicate key error index: api.inventory_user.$reference_id_1_member_id_1 dup key: { : "15", : "test@test.com" }20
- doctrine-mongodb
- doctrine-mongodb-odm
- DoctrineMongoDBBundle
MY CODE:
$i=14;
while($i<20){
$i++;
echo $i;
try{
$inventoryUser = new InventoryUser();
$inventoryUser->setMemberId('test@test.com');
$inventoryUser->setReferenceId($i);
$this->write($inventoryUser);
}catch (\Exception $e){
echo $e->getMessage();
echo $i;
}
}
private function write($inventory){
try{
$dm = $this->get('doctrine.odm.mongodb.apibase_document_manager');
$dm->persist($inventory);
$dm->getSchemaManager()->ensureIndexes();
$dm->flush();
}catch (\Exception $e){
throw new \Exception($e->getMessage());
}
}
namespace API\StoreBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document(db="api",collection="inventory_user")
* @MongoDB\UniqueIndex(keys={"reference_id"="asc", "member_id"="asc"})
*/
class InventoryUser
{
/**
* @MongoDB\Id
*/
private $id;
/**
* @MongoDB\String
*/
private $reference_id;
/**
* @MongoDB\String
*/
private $member_id;
public function getReferenceId(){
$this->reference_id;
}
public function getMemberId(){
$this->member_id;
}
public function setReferenceId($reference_id){
$this->reference_id=$reference_id;
}
public function setMemberId($member_id){
$this->member_id=$member_id;
}
}