Mysql 表中不存在键列“cat_id”

Mysql 表中不存在键列“cat_id”,mysql,Mysql,我有一张桌子 以及有 和另一个带有 我尝试使用以下方法在产品类别上添加外键: ALTER TABLE product_category ADD FOREIGN KEY (cat_id) REFERENCES categories(cat_id) 问题出在哪里?您必须先在表中添加cat_id,然后尝试添加外键引用 alter table Table_name add col_name data_type constraints 必须首先在表中添加cat_id,然后尝试添加外键引用 alter

我有一张桌子

以及有

和另一个带有

我尝试使用以下方法在产品类别上添加外键:

ALTER TABLE product_category
ADD FOREIGN KEY (cat_id)
REFERENCES categories(cat_id)

问题出在哪里?

您必须先在表中添加cat_id,然后尝试添加外键引用

alter table Table_name
add col_name data_type constraints

必须首先在表中添加cat_id,然后尝试添加外键引用

alter table Table_name
add col_name data_type constraints

表产品类别没有cat_id字段,因此无法添加引用。 添加与Category.cat_id具有相同数据类型的字段,然后重试

你用什么?请记住,MyISAM不支持


我猜pkey应该是prod_id的参考?将其命名为prod\u id或类似的名称可以更清楚地显示其引用的内容。

您的表产品类别没有cat\u id字段,因此无法添加引用。 添加与Category.cat_id具有相同数据类型的字段,然后重试

你用什么?请记住,MyISAM不支持


我猜pkey应该是prod_id的参考?将其命名为prod\u id或类似的名称会使其引用的内容更清晰。

您的表产品类别不包含您在查询中指定的列。。 添加它并运行此查询


查询没有问题。

您的表产品类别不包含您在查询中指定的列。。 添加它并运行此查询


查询没有问题。

问题是您的表被称为单数类别,并且您试图引用复数类别的表,除此之外,您没有使用表产品类别中的字段名

请参见下面的示例,该示例实现了您想要的功能。我已经更改了product_category中的字段名称,以便更清楚地知道在何处使用什么

mysql> create table category (cat_id int, category varchar(200));
Query OK, 0 rows affected (0.39 sec)

mysql> create table products (prod_id int, product varchar(200));
Query OK, 0 rows affected (0.40 sec)

mysql> create table product_category (pc_prod_id int, pc_cat_id int);
Query OK, 0 rows affected (0.13 sec)

mysql> alter table product_category add foreign key (pc_cat_id) references category(cat_id);
Query OK, 0 rows affected (0.42 sec)
Records: 0  Duplicates: 0  Warnings: 0

问题是您的表被称为category singular,您试图引用表categories复数,而且您没有使用表product_category中的字段名

请参见下面的示例,该示例实现了您想要的功能。我已经更改了product_category中的字段名称,以便更清楚地知道在何处使用什么

mysql> create table category (cat_id int, category varchar(200));
Query OK, 0 rows affected (0.39 sec)

mysql> create table products (prod_id int, product varchar(200));
Query OK, 0 rows affected (0.40 sec)

mysql> create table product_category (pc_prod_id int, pc_cat_id int);
Query OK, 0 rows affected (0.13 sec)

mysql> alter table product_category add foreign key (pc_cat_id) references category(cat_id);
Query OK, 0 rows affected (0.42 sec)
Records: 0  Duplicates: 0  Warnings: 0

这里是应该如何修复的:

我们有两张桌子

table1( id_table1 int primary key, field int)ENGINE=INNODB;
table2( id_table2 int primary key, id_table1 int, field2 int)ENGINE=INNODB;
如果要将表1的主键放入表2中,则必须在中声明 表2 id\u表1

如下所示:id\u table1整数


然后写下您的外键ID\u表1引用表1ID\u表1

这里是如何修复的:

我们有两张桌子

table1( id_table1 int primary key, field int)ENGINE=INNODB;
table2( id_table2 int primary key, id_table1 int, field2 int)ENGINE=INNODB;
如果要将表1的主键放入表2中,则必须在中声明 表2 id\u表1

如下所示:id\u table1整数

然后编写外键ID\u表1引用表1ID\u表1