【发布时间】:2021-06-24 00:08:32
【问题描述】:
我是 mysql 新手,如果这是一个愚蠢的问题,我深表歉意。我正在尝试创建一个新表,它给了我以下错误“错误代码:1822 无法添加外键约束。在引用的表‘预测器’中缺少约束‘results_ibfk_2’的索引”如果格式不是,请道歉很好,我不知道 mysql 应该如何显示在 Stack 上。我已将数据输入到“预测器”表中,但不知道如何将其添加到 Stack 表中。另外,当我在表格的括号中写主键时,这只是表示它是主键,它实际上并没有写在表格中。
感谢您的宝贵时间,
代码
CREATE TABLE results (
Predictor_Result_ID INT NOT NULL AUTO_INCREMENT,
Predictor_ID INT,
Predictor_Name VARCHAR(50),
Match_ID INT,
Match_Name VARCHAR(50),
Match_Result VARCHAR(50),
Match_Specific_Result VARCHAR(50),
Match_Specific_Result_Plus VARCHAR(50),
Match_Prediction VARCHAR(50),
Match_Specific_Prediction VARCHAR(50),
Match_Specific_Prediction_Plus VARCHAR(50),
Match_Prediction_SuccessOrFail VARCHAR(50),
Match_Specific_Prediction_SuccessOrFail VARCHAR(50),
Match_Specific_Prediction_Plus_SuccessOrFail VARCHAR(50),
PRIMARY KEY (Predictor_Result_ID),
FOREIGN KEY (Predictor_ID) REFERENCES predictors(Predictor_ID),
FOREIGN KEY (Predictor_Name) REFERENCES predictors(Predictor_Name),
FOREIGN KEY (Match_ID) REFERENCES matches(Match_ID),
FOREIGN KEY (Match_Name) REFERENCES matches(Match_Name),
FOREIGN KEY (Match_Result) REFERENCES matches(Match_Result),
FOREIGN KEY (Match_Specific_Result) REFERENCES
matches(Match_Specific_Result),
FOREIGN KEY (Match_Specific_Result_Plus) REFERENCES
matches(Match_Specific_Result_Plus)
)
表格
表格标题:匹配
| Match_ID (Primary Key) | Match_Name | Match_Result | Match_Specific_Result |
|---|---|---|---|
| Match_Specific_Result_Plus | Match_Name | ||
| ---------------------------- | ------------ |
表格标题:预测变量
| Predictor_ID (Primary Key) | Predictor_Name |
|---|
【问题讨论】:
-
您不应该在两个表之间重复列。只需使用外键链接到相关行,并通过加入获取其他列。
-
该错误是因为
predictors表在Predictor_Name上没有索引。您需要添加该索引。
标签: mysql