gpt4 book ai didi

MySQL FK 错误 1005 - 与 FK 相同的 PK

转载 作者:行者123 更新时间:2023-11-30 00:27:11 26 4
gpt4 key购买 nike

我有一个类似的问题: How to create foreign key that is also a primary key in MySQL?

但是我的架构似乎与答案匹配,但仍然返回错误“ERROR 1005 (HY000): Can't create table (errno:150)”

CREATE TABLE po_items (
job_id CHAR(3) NOT NULL,
po_id CHAR(3) NOT NULL,
item_id CHAR(3) NOT NULL,
quantity SMALLINT,
PRIMARY KEY (job_id, po_id, item_id),
FOREIGN KEY (job_id, po_id) REFERENCES pos(job_id, po_id)
) ENGINE = INNODB;

CREATE TABLE items (
item_id CHAR(3) NOT NULL,
descr CHAR(10),
on_hand SMALLINT,
price DECIMAL(5,2),
PRIMARY KEY (item_id),
FOREIGN KEY (item_id) REFERENCES po_items(item_id)
) ENGINE = INNODB;

提前致谢

最佳答案

要定义外键,引用的字段必须已建立索引。

根据有关外键约束的文档:

REFERENCES tbl_name (index_col_name,...)

在表 po_items 中的 item_id 上定义一个 INDEX,它应该可以工作。

CREATE TABLE po_items (
job_id CHAR(3) NOT NULL,
po_id CHAR(3) NOT NULL,
item_id CHAR(3) NOT NULL,
quantity SMALLINT,
KEY (item_id),
PRIMARY KEY (job_id, po_id, item_id),
FOREIGN KEY (job_id, po_id) REFERENCES pos(job_id, po_id)
) ENGINE = INNODB;

引用:

[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]

reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION

关于MySQL FK 错误 1005 - 与 FK 相同的 PK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22778345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com