DUPLICATE KEY ERROR对不同值的相同错误消息

时间:2012-11-15 10:59:58

标签: php mongodb symfony doctrine-odm doctrine-mongodb

当我想在失败后插入值时,我得到相同的消息错误(在不同的值上具有相同id的重复键错误索引)。

MONGODB中存在值15到17的键,将抛出异常。这是正常的用例,但是我得到了相同的错误信息,并且在17之后没有插入数据,这不是正常的用例。之前没有为18,19,20编写任何密钥,并且抛出了相同的异常

你有什么想法吗?

错误消息:

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
  • 教义-mongodb的
  • 教义-mongodb的-ODM
  • DoctrineMongoDBBundle

我的代码:

$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;
}
}

0 个答案:

没有答案