【发布时间】:2014-02-15 13:45:08
【问题描述】:
我正在使用 Yii 1.1.x 并在执行插入时收到以下错误。
CDbCommand failed to execute the SQL statement: SQLSTATE[23000]:
Integrity constraint violation: 1062 Duplicate entry '5375' for key 'PRIMARY'
这发生在名为“competition_prizes”的表上 - 只有一个名为“id”的主键(没有其他索引或类似的东西)。
我可以看到有一行 id 为 5375,因此条目确实已经存在(根据插入查询)。
控制器代码如下,在 afterSave() 功能中具有一些功能。
protected function setPrizes($prizes, $prize_type)
{
if(!empty($prizes) && is_array($prizes))
{
$prize_model = CompetitionPrizes::model();
$competition_id = $this->competition_id;
$prize_model->deleteAll('competition_id =:competition_id AND prize_type = :prize_type ',array(
':competition_id'=> $competition_id,
':prize_type'=> $prize_type
));
foreach($prizes as $prize_position => $prize_desc) :
$prize_model->setIsNewRecord(true);
$prize_model->setAttributes(compact('competition_id', 'prize_position', 'prize_type','prize_desc'));
$prize_model->save();
endforeach;
}
}
关于如何绕过错误的任何想法 - 请注意我是 Yii 的新手,所以要温柔:)
【问题讨论】:
标签: sql activerecord yii frameworks