Mysql 错误 1451,但找不到引用 id 的行



我需要从 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产生了约束。我添加了"级联删除"并更新了架构,但没有任何变化"数据库架构与映射文件同步"。

为了避免这个问题,请在你的 contraint 中添加ON DELETE CASCADE

这里有一篇帖子展示了如何在Symfony学说中做到这一点

关于删除与学说的级联2

此错误表示您有字段名称为"id"的表 A,并且在某处用作字段"agencementDimension_id"的引用,因此您无法删除此记录

您必须删除所有子行才能删除此记录,或者您可以通过在外键约束上设置ON DELETE CASCADE属性来自动删除

使用 Symfony 2 和 Doctrine 2,我在约束中添加了 ON DELETE CASCADE,这要归功于 JoinColumn onDelete 属性:

 * @ORMJoinColumn(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 中删除行!

相关内容

  • 没有找到相关文章

最新更新