首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql错误1451,但找不到带有引用id的行。

Mysql错误1451,但找不到带有引用id的行。
EN

Stack Overflow用户
提问于 2016-05-30 10:14:44
回答 3查看 325关注 0票数 1

我需要从一张桌子上删除一行。我得到一个1451错误,这意味着约束失败。但当我试图找出这种关系时,什么都没有。

代码语言:javascript
运行
复制
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生成的,我添加了“级联删除”和更新的模式,但是没有改变“数据库模式与映射文件同步”。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-30 12:15:37

使用Symfony 2和Doctrine 2,由于约束的JoinColumn onDelete属性,我添加了DELETE级联:

代码语言:javascript
运行
复制
 * @ORM\JoinColumn(name="agencementDimension_id", referencedColumnName="id", onDelete="CASCADE")

将MySQL错误消息更改为:

代码语言:javascript
运行
复制
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中删除行!

票数 0
EN

Stack Overflow用户

发布于 2016-05-30 10:25:33

为了避免这个问题,在违禁品中添加ON DELETE CASCADE

这里有一篇文章,展示了如何在symfony学说中这样做。

On delete cascade with doctrine2

票数 1
EN

Stack Overflow用户

发布于 2016-05-30 10:27:14

此错误表示表A的字段名为'id‘,该表在某个地方用作字段"agencementDimension_id“的引用,因此不能删除此记录。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37523114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档