gpt4 book ai didi

mysql - 外键遇到问题

转载 作者:行者123 更新时间:2023-11-29 14:45:23 24 4
gpt4 key购买 nike

我试图将 Budget2000 表中的类别作为 mainBudget 中类别的外键。类别不是唯一的数字,因此它不能是主键。当我运行代码时,我收到了著名的错误 1005。当我使用 id 将类别作为 mainBudget 中主键的一部分时,代码会运行,但这会在以后产生问题。我该怎么做才能使类别成为外键。我使用的是mysql 5.5。

这是我的代码

create table mainBudget(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
year Year NOT NULL,
amount double(10,2) NOT NULL,
category SMALLINT UNSIGNED NOT NULL,
primary key(id)
)ENGINE=INNODB;



create table budget2000(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
categories SMALLINT UNSIGNED NOT NULL,
INDEX categoryNumber (categories),
subCategory SMALLINT NOT NULL,
amount FLOAT(10,2) NOT NULL,
date DATE NOT NULL,
description VARCHAR(300) NOT NULL,
primary key(id),
FOREIGN KEY (categories) REFERENCES mainBudget(category)
)ENGINE=INNODB;

最佳答案

category 未在 mainBudget 中建立索引。引用表中的列必须建立索引(或索引的左前缀)。

顺便说一句,您确定拥有一个额外的表 category 并同时拥有 mainBudget.categorybudget200.categories 不是更好吗该表的外键?您当前的设置看起来有点奇怪,特别是 mainBudget 中引用的列不是唯一的。

关于mysql - 外键遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067594/

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