CREATE TABLE `product` (
`id` int(11) NOT NULL PRIMARY key AUTO_INCREMENT,
`p_name` varchar(250) NOT NULL,
`p_category` varchar(250),
`p_sub` varchar(255) NOT NULL,
`p_brand` varchar(250) NOT NULL,
`p_price` int(11) NOT NULL,
`p_desc` varchar(5000) NOT NULL,
`p_qty` int(11) NOT NULL,
`p_image` varchar(200) NOT NULL,
Foreign Key(`p_category`) references categories(`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
#1005 - 无法创建表
.testing
(errno:150“外键约束形成不正确”)product
这是我的类别表
CREATE TABLE `category` (
`cid` int(11) primary key NOT NULL auto increment,
`name` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
我需要可以从类别表中获取所有类别 ID 并将其显示在 p_category 表中的产品表中的解决方案
你的表被称为
category
但是你的外键引用categories
:
Foreign Key(`p_category`) references categories(`cid`)
此外,即使您修复了该问题,
product.p_category
列也是 varchar(250)
但它引用了 category.cid
即 int
.
它们必须是相同的数据类型。
附言
int(11)
的“长度”无关紧要,它在 MySQL 8 中已弃用。请使用 int
(无长度参数)。