我需要从A表中删除一行。我收到1451错误,这意味着约束失败。但是当我试图找到这种关系时,什么都没有出现。
mysql> delete from A where id=961;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key
constraint fails (`xxx`.`B`, CONSTRAINT `FK_D273C62CBE4E457A` FOREIGN KEY
(`agencementDimension_id`) REFERENCES `A` (`id`))
mysql> select * from B where agencementDimension_id=961;
Empty set (0.00 sec)
Doctrine + Symfony 2已经生成了约束。我添加了"级联删除"和更新的模式,但没有改变"数据库模式与映射文件同步#34;。
答案 0 :(得分:1)
要避免此问题,请在您的约束中添加ON DELETE CASCADE
这里有一篇文章,展示了如何在symfony doctrine
中做到这一点答案 1 :(得分:0)
此错误表示您的表A包含字段名称' id'并且在某处作为参考用于现场" agencementDimension_id"所以你不能删除这条记录
您必须删除所有子行才能删除此记录,或者您可以通过在外键约束上设置ON DELETE CASCADE
属性来自动删除
答案 2 :(得分:0)
使用Symfony 2和Doctrine 2,我添加了ON DELETE CASCADE,这要归功于JoinColumn onDelete属性的约束:
* @ORM\JoinColumn(name="agencementDimension_id", referencedColumnName="id", onDelete="CASCADE")
将MySQL错误消息更改为:
mysql> delete from A where id=961;
ERROR 1451 (23000): Cannot delete or update a parent row:
a foreign key constraint fails (`xxx`.`C`, CONSTRAINT `FK_BF92805FD55A3663`
FOREIGN (`agencementVersionDimension_id`) REFERENCES `B` (`id`))
我在B和C之间有第二种关系。我不知道为什么MySQL从一开始就告诉我这一点。无论如何,我已经能够删除C中的行,这允许我从A中删除行!