我偶尔会通过Symfony doctrine更新表时出现“完整性约束违规:1062重复条目...关键'PRIMARY'”错误。使用相应的历史记录表创建该表。错误不是来自更新表本身,而是来自在历史表中插入记录。我正在使用Symfony 1.4,学说1.2。知道是什么导致了这个吗?感谢。
$this->computer = $computerTable->findOneByMacAddress($this->props['mac_address']);
$this->computer->ip_address = $this->ip;
$this->computer->setLastCheckinAt(date('Y-m-d H:i:s')) ;
$this->computer->save();
schema.yml
Computer:
actAs:
Timestampable: ~
History:
className: %CLASS%History
auditLog: true
deleteVersions: false
cascadeDelete: false
columns:
mac_address: { type: string(13), notnull: true, }
last_checkin_at: { type: string(60), }
ip_address: { type: string(40), fixed: false, notnull: false, }
...
答案 0 :(得分:2)
在某些情况下,findOneByMacAddress
很可能找不到现有记录,并且您有一个空列mac地址,您将其保存到数据库中。
尝试这样的事情:
if(!$this->computer = $computerTable->findOneByMacAddress($this->props['mac_address']))
{
$this->computer = new Computer();
}
/*do logic here*/
$this->computer->save();