【发布时间】:2018-05-17 18:55:32
【问题描述】:
我有两个预先存在的表,bar(有 2 列,id [int 11] 和 name)和 foo_bar(有 3 列,id、foo_id 和 @987654327 @ [int 11])。 (还有一个表foo,但这与这里无关。)
我想添加到foo_bar 的迁移,以便当从bar 中删除一行时,它会删除foo_bar 中的相关行。这是我的声明:
ALTER TABLE `foo_bar` ADD FOREIGN KEY (`bar_id`) REFERENCES `bar`(`id`) ON DELETE CASCADE
但是当我运行它时,我得到了这个错误:
1452 - 无法添加或更新子行:外键约束失败 (
dbn.#sql-1_10ad, CONSTRAINT#sql-1_10ad_ibfk_1FOREIGN KEY (bar_id) REFERENCESbar(id) ON DELETE CASCADE )
bar 表上的bar_id 和id 的类型均为int(11)。 bar 表上的 id 是主键。
【问题讨论】:
-
1) 通过在测试环境中创建 2 个表(无数据)并运行 alter 语句来检查您的语法。 2) 如果 1 没问题,那么问题出在数据上。
标签: mysql sql foreign-keys