我试图在我的表idtabless
上包含删除级联
,但我收到错误无法添加外键约束
我不知道可能是什么原因。
这是我的主表
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 ;
我在此表上添加了删除级联
并且工作正常
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 ;
最佳答案
您的数据类型不匹配。 Courses.courseid 是整数,idtabless.courseid 是 varchar。将后者更改为整数 (11),您就可以开始工作了。
关于php - 删除级联错误时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24005520/