我试图将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 ;
答案 0 :(得分:1)
您的数据类型不匹配。 Courses.courseid是整数,idtabless.courseid是varchar。将后者更改为整数(11),您将开始营业。