2017-01-04 122 views
0

我尝试创建链接到两个表的表。
链接的表:MYSQL:“无法添加外键约束”

CREATE TABLE `cartsitems` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `cart_id` INT NOT NULL, 
    `product_id` INT NOT NULL, 
    `price` DOUBLE(6,2) NOT NULL, 
    PRIMARY KEY (`id`), 
    FOREIGN KEY (`cart_id`) REFERENCES `carts`(`id`), 
    FOREIGN KEY (`product_id`) REFERENCES `products`(`id`) 
) 

产品表:

CREATE TABLE `products` (
    `id` INT AUTO_INCREMENT, 
    `category_id` INT, 
    `description` VARCHAR(255), 
    `price` DOUBLE(6,2), 
    PRIMARY KEY (`id`), 
    FOREIGN KEY (`id`) REFERENCES `categories`(`id`) 
) 

的车表:

CREATE TABLE `carts` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `users_id` INT NOT NULL, 
    PRIMARY KEY (`id`), 
    FOREIGN KEY (`users_id`) REFERENCES `users`(`id`) 
) 

我搜索,我发现这个答案:MySQL Cannot Add Foreign Key Constraint
我检查&我引擎是一样的(因为我没有设置别的东西),还有e集合 类型是一样的(均为int)
其uniqe(主键)
问题是什么?

+1

“产品”表中没有“id”列。 – Barmar

+0

在'products'表中,外键应该是'category_id'。 – Barmar

+0

@Barmar,它必须在副本上删除,我编辑 –

回答

0

您在产品表中缺少id字段。

CREATE TABLE `products` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `category_id` INT, 
    `description` VARCHAR(255), 
    `price` DOUBLE(6,2), 
    PRIMARY KEY (`id`), 
    FOREIGN KEY (`id`) REFERENCES `categories`(`id`) 
); 
+0

他只是编辑了问题来添加它。 – Barmar