对mysql表中不匹配的外键进行故障排除

时间:2014-07-23 12:09:25

标签: mysql foreign-keys

我有两个myIsam表studentfee,后来更改为InnoDB引擎并将外键分配给section表中的fee字段,该字段指向{{1}带有UPDATE和DELETE CASCADE的section表中的字段。我的问题是现有的student字段值与现有的section部分值不匹配。发生这种情况是因为在我更改引擎之前,我更新了学生表student字段,并认为当我转换表并分配时,section表中的section字段值也会发生变化两个表中fee字段的外键。我不确定同步是否会解决它。我是新手,不知道我怎么解决这个问题。请帮帮我。

费用表:

section

学生表:

CREATE TABLE IF NOT EXISTS `fee` (
  `f_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `regd` bigint(20) unsigned NOT NULL,
  `Class` varchar(20) COLLATE latin1_general_ci NOT NULL,
  `Section` varchar(10) COLLATE latin1_general_ci NOT NULL,
  `Amount` int(11) NOT NULL,
  `Balance` int(11) NOT NULL,
   PRIMARY KEY (`f_id`),
   KEY `Section` (`Section`),
  KEY `Rollno` (`Rollno`),
  KEY `regd` (`regd`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci 
 AUTO_INCREMENT=2500;

ALTER TABLE `fee`
  ADD CONSTRAINT `fee_ibfk_1` FOREIGN KEY (`Section`) 
  REFERENCES `student` (`Section`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `fee_ibfk_2` FOREIGN KEY (`Rollno`) 
  REFERENCES `student` (`Roll_no`) ON DELETE CASCADE ON UPDATE CASCADE;

1 个答案:

答案 0 :(得分:1)

除非你有哪些费用应该记录哪个学生,但我担心你不能这样做。

您必须重新创建链接;要么使用运行UPDATE的日志,要么使用备份,要么手动使用。