我正在尝试创建一个自身带有外键的表。我想建模一个可以是另一个类别的子类别的类别。这是我的 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 一直报错:
Can't create table 'recipes.category' (errno: 150)
我想找出我做错了什么,有人可以给我提示吗?文档说:
Cannot create table. If the error message refers to error 150, table creation failed because a foreign key constraint was not correctly formed.
但是,这对我帮助不大。
最佳答案
我想您希望 parent_id
列链接到 id
列(而不是 id
列 id
column) 构建层次结构。否则它没有多大意义:
constraint `parent_id`
foreign key (`parent_id`)
references `category` (`id`)
on delete no action
on update no action);
关于MySQL 一直提示外键。错误 150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094505/