【问题标题】:MySQL keeps complaining about foreign key. Error 150MySQL一直在抱怨外键。错误 150
【发布时间】:2015-06-27 23:16:42
【问题描述】:

我正在尝试创建一个具有自身外键的表。我想建模一个可以是另一个类别的子类别的类别。这是我的 SQL:

CREATE TABLE IF NOT EXISTS `recipes`.`category` (
  `id` INT NOT NULL COMMENT '',
  `name` VARCHAR(60) NOT NULL COMMENT '',
  `description` VARCHAR(255) NULL COMMENT 'Description of the recipe category.',
  `parent_id` INT NULL COMMENT '',
  PRIMARY KEY (`id`)  COMMENT '',
  CONSTRAINT `parent_id`
    FOREIGN KEY (`id`)
    REFERENCES `recipes`.`category` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

但是,MySQL 一直给我一个错误:

无法创建表“recipes.category”(错误号:150)

我正在尝试找出我做错了什么,有人可以给我提示吗?文档说:

无法创建表。如果错误消息是指错误 150,则表 创建失败,因为外键约束不正确 形成。

但是,这对我没有多大帮助。

【问题讨论】:

    标签: mysql sql database foreign-keys


    【解决方案1】:

    我猜你希望parent_id 列链接到id 列的外键(而不是id 列到id)来构建层次结构。否则没有多大意义:

    constraint `parent_id`
    foreign key (`parent_id`)
    references `category` (`id`)
    on delete no action
    on update no action);
    

    SQLFiddle

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2011-07-18
      • 2011-12-01
      相关资源
      最近更新 更多