首页 文章

Mysql错误:1215无法添加外键约束

提问于
浏览
2

引用表是'group'(InnoDB) .

它有一个'id'列定义为INT(11),不可为空,自动增量,主键

引用表是'用户(InnoDB)

它将'group_id'列定义为INT(11),不可为空 .

在引用表中已经存在基于'group_id'列的唯一索引

但是谁在执行

ALTER TABLE `user`
   ADD CONSTRAINT `user_group` FOREIGN KEY (`group_id`) REFERENCES `group` (`id`)
      ON DELETE CASCADE
      ON UPDATE CASCADE

我收到了一个错误

错误:1215无法添加外键约束

我添加了数据库转储

CREATE TABLE IF NOT EXISTS `groups` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `language` varchar(255) NOT NULL,
  `order` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `group_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

检查清单

  • 是Db InnoDB吗?是

  • 所有表都是InnoDB吗?是

  • 引用表上是否存在唯一索引?是

  • 引用和引用列完全相同的类型?是

问题很简单: why cannot I create this foreign key ?

更新1:我尝试用ON DELETE RESTRICT替换ON DELETE CASCADE并且没有任何变化,我也尝试删除ON DELETE和ON UPDATE没有任何变化

1 回答

  • 3

    你错过了表名中的 s .

    改变这一点

    REFERENCES `group` (`id`)
    

    REFERENCES `groups` (`id`)
    

    DEmo

相关问题