即使父行存在,外键约束也会失败

时间:2013-12-03 14:28:13

标签: mysql sql

我有两张桌子。

CREATE TABLE `RuleEntity` (
`rule_id` bigint(20) NOT NULL,
`action_word` varchar(255) DEFAULT NULL,
`condition_word` varchar(255) DEFAULT NULL,
`description` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`ruleGUID` varchar(255) NOT NULL,
`rule_type` varchar(255) DEFAULT NULL,
`caseflag` tinyint(1) NOT NULL DEFAULT '0',
`globalflag` tinyint(1) NOT NULL DEFAULT '1',
`multilineflag` tinyint(1) NOT NULL DEFAULT '1',
`isDefault` tinyint(1) DEFAULT '0',
PRIMARY KEY (`rule_id`),
UNIQUE KEY `ruleGUID` (`ruleGUID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1


CREATE TABLE `PreProcessorRule` (
 `id` bigint(20) NOT NULL,
`rank` int(11) DEFAULT NULL,
`rule_rule_id` bigint(20) DEFAULT NULL,
`defaultRuleGUID` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK4BD420EB4273A655` (`rule_rule_id`),
  CONSTRAINT `FK4BD420EB4273A655` FOREIGN KEY (`rule_rule_id`) REFERENCES `RuleEntity` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我试图在RuleEntiy中插入1行,在PreprocessorRule中插入另一行。但它因外键约束而失败。

INSERT INTO `RuleEntity` (`rule_id`,`action_word`,`condition_word`,`description`,`caseflag`,`globalflag`,`multilineflag`,`name`,`ruleGUID`,`rule_type`, `isDefault`) VALUES ( '1',' ','[^\\x00-\\x7F]','HF Default Rule:  Removes Non-ASCII Character.',1,1,1,'HF: Non-ASCII Remover','1157B568665E08','CUSTOM', 1);
Query OK, 1 row affected (0.02 sec)

INSERT INTO `HFP`.`PreProcessorRule` (`id`, `rank`, `rule_rule_id`) VALUES ('1', '0', '1');
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`HFP`.`PreProcessorRule`, CONSTRAINT `FK4BD420EB4273A655` FOREIGN KEY (`rule_rule_id`) REFERENCES `RuleEntity` (`rule_id`))

我在MAC OS X 10.9上的本地MySQL 5.1上运行了相同的sql。有效。现在我试图在Amazon RDS MySQL上运行它,我收到此错误。

请让我知道出了什么问题?

0 个答案:

没有答案