1

我收到错误消息:

无法添加或更新子行:外键约束失败 ( mydb/requests, CONSTRAINT requests_ibfk_5FOREIGN KEY ( fixture_id) REFERENCES fixtures( fix_id) ON UPDATE CASCADE ON DELETE CASCADE)

我有以下表结构:

CREATE TABLE IF NOT EXISTS `requests` (
  `request_id` int(11) unsigned NOT NULL auto_increment,
  `fixture_id` int(11) unsigned NOT NULL,
  `user_id` int(11) unsigned NOT NULL,
  `date_added` datetime NOT NULL,
  `date_modified` datetime default NULL,
  PRIMARY KEY  (`request_id`),
  UNIQUE KEY `fixture_id_2` (`fixture_id`,`user_id`),
  KEY `user_id` (`user_id`),
  KEY `date_added` (`date_added`),
  KEY `fixture_id` (`fixture_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ;


CREATE TABLE IF NOT EXISTS `fixtures` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `fix_id` int(11) unsigned NOT NULL default '0',
  `fixture_date` date default NULL,
  `kickoff` time default NULL,
  `venue` varchar(35) default NULL,
  `home_score` tinyint(4) default NULL,
  `away_score` tinyint(4) default NULL,
  `date_added` datetime default NULL,
  `date_modified` datetime default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `fix_id` (`fix_id`),
  KEY `fixture_date` (`fixture_date`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=383 ;


ALTER TABLE `requests`
  ADD CONSTRAINT `requests_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `requests_ibfk_5` FOREIGN KEY (`fixture_id`) REFERENCES `fixtures` (`fix_id`) ON DELETE CASCADE ON UPDATE CASCADE;

如果我更新父表(fixtures)的 fix_id 字段上的记录,在子表(requests)中有一个共享 id(fixture_id),我会收到上述错误。

我不明白为什么这个完整性约束会失败。两个表都已经有了应该级联的正确数据?

非常感谢任何帮助。

4

2 回答 2

0

这都是我自己的错误。在现实中,我在同一个领域有两个外国限制。我只需要脱一个。

于 2010-08-18T12:24:25.963 回答
0

由于引用其他表而发生此错误,在两个表中应该存在相同的 id's/data。如果不是,请使用 where 条件删除不存在的数据。

示例 update tablename a set = 'field' (select field from othertable b) where a.data = b.data;

于 2013-05-06T06:29:20.140 回答