Symfony1 &引用;完整性约束冲突:1062重复条目“;使用Symfony学说版本

Symfony1 &引用;完整性约束冲突:1062重复条目“;使用Symfony学说版本,symfony1,doctrine,Symfony1,Doctrine,在通过Symfony原则更新表时,我偶尔会遇到“完整性约束冲突:1062重复条目…用于键'PRIMARY'”错误。该表是使用相应的历史记录表创建的。错误不是因为更新了表本身,而是因为在历史记录表中插入了记录。我使用的是Symfony 1.4,条令1.2。知道是什么引起的吗?谢谢 $this->computer = $computerTable->findOneByMacAddress($this->props['mac_address']); $this->compute

在通过Symfony原则更新表时,我偶尔会遇到“完整性约束冲突: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, }
    ...

在某些情况下,
findonebymacadress
很可能找不到现有记录,并且您有一个空的列mac地址要保存到数据库中

试着这样做:

if(!$this->computer = $computerTable->findOneByMacAddress($this->props['mac_address']))
{
   $this->computer = new Computer();
}
/*do logic here*/
$this->computer->save();

发布生成错误的代码以及模式的相关部分。另外,您是否正在尝试手动更新历史记录表,或者当它尝试自动更新历史记录表时是否引发异常?$this->computer=$computerTable->findonebymacadress($this->props['mac_address');嗯??更新您的问题,并且不会进行任何保存,因此不可能生成约束冲突。。。您需要插入、更新或删除才能执行此操作…当它尝试自动更新历史记录表时会引发异常。原始代码太长,无法粘贴到此处。我确信返回了正确的记录。该错误是由于将记录保存在历史记录表中引起的。顺便说一句,这是一个负载平衡的环境。这不是问题所在。如果$this->computer不是空的,则在保存记录之前不会引发异常。