0

table1このクエリを使用して、外部キーを自分に追加しようとしています。

  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

そのエラー(Cannot add or update a child row: a foreign key constraint fails)はMySQLFKDocで参照されています

2つのテーブル間に参照を追加するには、条件が既存のデータに適合している必要があります。

つまり、と言うとtable1.id = table2.id、とのすべてのIDが一致する必要がtable1あります。table2

これを解決するには、一致しない行を削除または修正する必要があります。
例:

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 に答える