私は2つの列を持つ名前のテーブルを持ってい"label"
ます:
_LABEL_ID (varchar)
_LENGTH (varchar)
このテーブルには既にデータが含まれています。
そして、他にもいくつかのテーブル"a", "b", "c",
などがあります。
これらのテーブルには列_LABEL_ID
(varchar) があります。これらのテーブルは空ではありません
テーブルから行を削除するとa, b, c,
、そのラベルが " label
" テーブルから削除されます。label
これを行うためにテーブルを参照する" " に外部キーを追加しようとしましたが"a"
(テストするためだけに)、この質問のように同じエラーが発生しました:
私の場合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: 下手な英語でごめんなさい!