完整性约束违规:1451未使用sqlite引发

时间:2017-04-11 09:53:16

标签: mysql sqlite symfony doctrine

我编写了一个因外键而失败的代码。在一个实体上,我添加了一个带有外部约束的字段。

<?php

namespace CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\Table(name="experience")
 * @ORM\Entity(repositoryClass="CoreBundle\Repository\ExperienceRepository") 
 */
Experience{
  /**
   * @ORM\OneToMany(targetEntity="Relationship", mappedBy="experience")
   */
  private $relationships;

  public function __construct()
  {
      $this->relationships = new ArrayCollection();
  }

}

当我尝试DELETE体验mysql引发经典

An exception occurred while executing 'DELETE FROM experience WHERE id = ?' 
with params [127]:\n\nSQLSTATE[23000]:
Integrity constraint violation: 1451 
Cannot delete or update a parent row: a foreign key constraint fails

我对此错误没有任何问题。我知道为什么我有它以及如何解决它。

但是当我换成sqlite时,不会引发任何错误。我使用sqlite在DB之外运行我的测试,我假设mysql和sqlite的行为方式相同。

sqlite发生了什么?

编辑:似乎在sqlite上默认不激活外键。该文档说明了如何通过CLI激活它,但如何在symfony中配置它?

0 个答案:

没有答案