MYSQL: "Cannot add foreign key constraint"

标签 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
我检查引擎是否相同(因为我没有设置其他内容),还有集合 类型相同(都是int)
及其唯一性(主键)
有什么问题吗?

最佳答案

您在产品表中缺少 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`)
);

关于MYSQL: "Cannot add foreign key constraint",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41473090/

相关文章:

php - 从数据库中选择以定义符号开头的记录

PHP 爆炸成 MYSQL 只显示最后一个值

php - 查询发现总号为: rows of the a table selected for past 30 days

mysql - 消息中mysql中的嵌套查询

MYSQL : get unique substrings from string

java - 如何在网页上录制音频并存储在数据库中

mysql - 从单个表中获取不同记录的计数-MySQL

mysql - 选择与具有特定值的其他行关联的行

MySQL ON DUPLICATE 插入另一个表

php - 注意第 10 行 : Undefined index: enroll in G:\xampp\htdocs\tg\1stSubmit. php