0

我正在尝试table1使用此查询将外键添加到 my 。

  ALTER TABLE `db`.`table1` 
  ADD CONSTRAINT `fk_table1_2`
  FOREIGN KEY (`field1` )
  REFERENCES `db`.`table2` (`id` )
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

table1.field1应该指的是table2.id,两者都是INT(11)

它失败并出现此错误:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`db`.<result 2 when explaining filename '#sql-3f9_4c'>, CONSTRAINT `fk_table1_2` FOREIGN KEY (`field1`) REFERENCES `table2` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

在 Workbench 中尝试会出现上一个错误,另一个错误是ERROR 1050: Table 'table1' already exists显示CREATE TABLE查询,就好像它正在尝试“重新创建”表一样!

它出什么问题了?

4

1 回答 1

0

MySQL FK DocCannot add or update a child row: a foreign key constraint fails中引用了该错误 ( )

要在 2 个表之间添加引用,条件必须适合现有数据。

这意味着如果你说then的table1.id = table2.id所有 id必须匹配在一起。table1table2

要解决这个问题,您必须消除或修复那些不匹配的行。
例子:

table1.id  |  table2.fk
   1       |       1      ok 
   2       |     null     error
   3       |       4      error if id 4 is not in table1
于 2012-05-09T10:52:16.873 回答