2014-03-29 124 views
1

我已经创建了包含复合主键的表,但在编辑时给出了cakephp中的完整性约束违规错误。cakephp中的完整性约束违规

完整性约束违规:1062重复条目,同时节省

回答

1

完整性约束违规意味着你要保存在数据库中的唯一值的重复模式的复合主键数据。主键必须是唯一的。

你的数据库中的主键字段是否设置为自动增量?如果你不这样做,那可能是你的问题。否则,当你插入一条记录时,它可能会插入一个PK为0的行。然后当它试图插入另一条记录时,它会尝试插入PK为0的另一行,因此不是唯一的,并抛出完整性约束违规。

然而

你提到,你正在做一个编辑。如果您正在进行编辑,那么当您将其保存到数据库时,您没有传递编辑的行主键,所以Cake会尝试执行CREATE,因此会导致另一个重复的行ID。

确保你这样做:

$this->Model->id = $id; // Where $id is the Primary Key of the row being edited. 

反过来,你也可以这样做:

$data['Model']['id'] = $id; 
$this->Model->save($data); 

您可以通过将其存储在您的编辑形式的隐藏字段捕获的$ id ,或者作为传递给动作的URL参数。

相关问题