3

私は2つの列を持つ名前のテーブルを持ってい"label"ます:

_LABEL_ID (varchar)
_LENGTH   (varchar)

このテーブルには既にデータが含まれています。

そして、他にもいくつかのテーブル"a", "b", "c",などがあります。

これらのテーブルには列_LABEL_ID(varchar) があります。これらのテーブルは空ではありません

テーブルから行を削除するとa, b, c,、そのラベルが " label" テーブルから削除されます。labelこれを行うためにテーブルを参照する" " に外部キーを追加しようとしましたが"a"(テストするためだけに)、この質問のように同じエラーが発生しました:

mysql に外部キーを追加できませんか?

私の場合InnoDB、すべてのテーブル、一意の名前 FK、同じデータ型のエンジンがあります。

行をエクスポートしてからテーブルlabelを空にし、labelテーブルを参照する外部キーをテーブルに追加すると、"a"問題なく動作します。行をテーブルに再度インポートするlabelと、外部キーを追加しようとしたときに発生したのと同じエラーが発生します。

tableの行はlabel異なるテーブル (a、b、c、..etc) に属しています。これがエラーの原因ですか?

私はMySQL Workbenchを使用してこれを行います

編集: 実際の SQL ステートメントとエラー メッセージ:

ALTER TABLE `cal_view_db`.`dbo_pub_label` 
  ADD CONSTRAINT `fk_dbo_pub_label_treenode`
  FOREIGN KEY (`_LABEL_ID` )
  REFERENCES `cal_view_db`.`dbo_system_treenode` (`_NAME_ID` )
  ON DELETE CASCADE
  ON UPDATE NO ACTION
, ADD INDEX `fk_dbo_pub_label_treenode_idx` (`_LABEL_ID` ASC) ;

エラーメッセージ:

ERROR 1452: Cannot add or update a child row: a foreign key constraint fails (`cal_view_db`.`#sql-10cc_4a`, CONSTRAINT `fk_dbo_pub_label_treenode` FOREIGN KEY (`_LABEL_ID`) REFERENCES `dbo_system_treenode` (`_NAME_ID`) ON DELETE CASCADE ON UPDATE NO ACTION)
SQL Statement:
ALTER TABLE `cal_view_db`.`dbo_pub_label` 
  ADD CONSTRAINT `fk_dbo_pub_label_treenode`
  FOREIGN KEY (`_LABEL_ID` )
  REFERENCES `cal_view_db`.`dbo_system_treenode` (`_NAME_ID` )
  ON DELETE CASCADE
  ON UPDATE NO ACTION
, ADD INDEX `fk_dbo_pub_label_treenode_idx` (`_LABEL_ID` ASC)

ERROR: Error when running failback script. Details follow.

ERROR 1046: No database selected
SQL Statement:
CREATE TABLE `dbo_pub_label` (
  `_LABEL_ID` varchar(45) NOT NULL,
  `_LENGTH` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`_LABEL_ID`),
  KEY `fk_dbo_pub_label_1_idx` (`_LABEL_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

どうもありがとう

ps: 下手な英語でごめんなさい!

4

1 に答える 1