我需要从一张桌子上删除一行。我得到一个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生成的,我添加了“级联删除”和更新的模式,但是没有改变“数据库模式与映射文件同步”。
发布于 2016-05-30 12:15:37
使用Symfony 2和Doctrine 2,由于约束的JoinColumn onDelete属性,我添加了DELETE级联:
* @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中删除行!
发布于 2016-05-30 10:25:33
发布于 2016-05-30 10:27:14
此错误表示表A的字段名为'id‘,该表在某个地方用作字段"agencementDimension_id“的引用,因此不能删除此记录。
您必须删除所有子行才能删除此记录,或者可以通过在外键约束上设置ON DELETE CASCADE
属性自动删除
https://stackoverflow.com/questions/37523114
复制相似问题