失敗した後に値を挿入しようとすると、同じメッセージ エラー (異なる値に同じ 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
- doctrine-mongodb-odm
- DoctrineMongoDBバンドル
私のコード:
$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;
}
}