2010-08-18 82 views
1

我收到错误:MYSQL:不能添加或更新子行,外键约束失败

不能添加或更新子行,外键约束失败(mydb/requests,约束requests_ibfk_5外键(fixture_id )参考文献fixturesfix_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; 

如果我更新了fix_id记录字段父表(fixtures),在子表(请求)中有一个共享ID(fixture_id)我得到上述错误。

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

任何帮助非常感谢。

+0

有没有fix_id'0'这是你的默认值? – extraneon 2010-08-18 12:09:45

+0

不,我没有在任何一个表中有0的记录。 – 2010-08-18 12:17:08

回答

0

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

0

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

示例 更新表名a set ='field'(从其他b选择字段)其中a.data = b.data;

相关问题