Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我的sql程序有外键问题_Mysql_Sql - Fatal编程技术网

Mysql 我的sql程序有外键问题

Mysql 我的sql程序有外键问题,mysql,sql,Mysql,Sql,我得到这个错误 错误1822(HY000):未能添加外键约束。丢失的 引用表中的约束“purchase_ibfk_2”的索引 “库存” 在这里: 外键引用的列需要唯一索引:库存(项目名称)没有该索引。我只建议引用inventory的主键,而不是其他列: create table purchase ( ... foreign key (item_name) references inventory(item_name) ) 错误代码非常明确(且准确),采购表应该有一个item_i

我得到这个错误

错误1822(HY000):未能添加外键约束。丢失的 引用表中的约束“purchase_ibfk_2”的索引 “库存”

在这里:

外键引用的列需要唯一索引:
库存(项目名称)
没有该索引。我只建议引用
inventory
的主键,而不是其他列:

create table purchase (
    ...
    foreign key (item_name) references inventory(item_name)
)

错误代码非常明确(且准确),采购表应该有一个item_id列,而不是item_name列。它应该是FK。您希望在表
购买
中有
项目id
,然后在
项目id
上创建FK。FKs与PKs相关,而非描述性字段。您需要:“MySQL需要外键和引用键的索引,以便外键检查可以快速进行,并且不需要表扫描。在引用表中,必须有一个索引,其中外键列按相同顺序列示为第一列。”Welcome@0xAli。如果我的答案正确回答了你的问题,那么点击复选标记。。。谢谢。独特是好的,但不是必需的。没有唯一的。
create table purchase (
    ...
    foreign key (item_name) references inventory(item_name)
)
create table purchase (
    purchase_date date,
    purchase_count int, 
    customer_id int,
    item_id int,
    foreign key (customer_id) references customer(customer_id),
    foreign key (item_id) references inventory(item_id)
);