我编写了一个因外键而失败的代码。在一个实体上,我添加了一个带有外部约束的字段。
<?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中配置它?