关于删除级联错误

时间:2014-06-03 00:49:05

标签: php mysql sql html5

我试图将on delete cascade包含在我的表idtabless上,但我收到错误Cannot add foreign key constraint我不知道原因是什么。

这是我的主要表格

CREATE TABLE IF NOT EXISTS `courses` (
  `courseId` int(11) NOT NULL AUTO_INCREMENT,
  `coursename` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `id` int(11) NOT NULL,
  PRIMARY KEY (`courseId`),
  KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=218 ;

我在此表中包含on delete cascade并且工作正常

CREATE TABLE IF NOT EXISTS `studentss` (
  `studentid` int(11) NOT NULL AUTO_INCREMENT,
  `fname` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `lname` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  `studentcode` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `courseid` int(11) NOT NULL,
  PRIMARY KEY (`studentid`),
  KEY `courseid` (`courseid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=28 ;

我试图对idtabless做同样的事情,并且当我输出错误

CREATE TABLE IF NOT EXISTS `idtabless` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `courseid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `studentid` char(64) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
FOREIGN KEY fk_courses_id (courseid)
    REFERENCES courses (courseid)
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=43 ;

1 个答案:

答案 0 :(得分:1)

您的数据类型不匹配。 Courses.courseid是整数,idtabless.courseid是varchar。将后者更改为整数(11),您将开始营业。