【问题标题】:Mysql error: 1215 Cannot add foreign key constraintMysql报错:1215无法添加外键约束
【发布时间】:2014-06-28 17:31:27
【问题描述】:

引用的表是“组”(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 ;

检查清单

  1. 数据库是 InnoDB 吗?是的
  2. 所有表都是 InnoDB 吗?是的
  3. 引用表上是否存在唯一索引?是的
  4. 是否被引用和引用列完全属于同一类型?是的

问题很简单:为什么我不能创建这个外键?

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

【问题讨论】:

    标签: mysql sql foreign-keys foreign-key-relationship


    【解决方案1】:

    您在表名中遗漏了s

    改变这个

       REFERENCES `group` (`id`)
    

       REFERENCES `groups` (`id`)
    

    DEmo

    【讨论】:

    • 1:为什么? 2.我尝试使用on delete restrict(如果我不能删除非空组,它会更有用),但我得到了同样的错误3:即使删除ON DELETE和ON UPDATE问题仍然存在,无法创建
    猜你喜欢
    • 2015-02-04
    • 2016-05-15
    • 1970-01-01
    • 2013-06-02
    • 2018-04-28
    相关资源
    最近更新 更多