php - 删除级联错误时

标签 php mysql sql html

我试图在我的表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/

相关文章:

php - 将 mysql 行添加到表中 href 的末尾

php - mysql_query() 期望参数 2 是资源, bool 值给出

PHP PDO 在数组内插入图像的目录路径

mysql - Play 2.0 Complex join query如何解析(Anorm)

mysql "Cannot add foreign key constraint"

php - 在 SQL 中将 INT 转换为小时和分钟

mysql - 从相关表中选择最大值

php - 如何在 laravel 中检查今天的日期和时间

php - INSERT...ON DUPLICATE KEY UPDATE 无法按预期工作

php - 尝试登录 Google 以下载 Google 趋势数据