我有一个名为"label"
2 列的表:
_LABEL_ID (varchar)
_LENGTH (varchar)
这个表已经有数据了!
我还有其他几张桌子"a", "b", "c",
等。
这些表具有列_LABEL_ID
(varchar)。这些表不为空
从表中删除任何行a, b, c,
...等,然后从“ label
”表中删除其标签。我尝试将外键添加到label
引用表的“”以"a"
执行此操作(只是为了测试它),但得到与此问题相同的错误:
在我的情况下,我有InnoDB
所有表的引擎,唯一的名称 FK,相同的数据类型。
现在我导出label
行,然后清空label
表,将外键添加到引用"a"
表的工作就好了。如果我再次将行导入label
表中,我会得到与尝试添加外键时相同的错误。
表中的行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:对不起我的英语不好!