2014-03-29 163 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參數。

相關問題