【问题标题】:mysql issue, failing to add the foreign key constraint with missing indexmysql问题,无法添加缺少索引的外键约束
【发布时间】: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


【解决方案1】:

该消息告诉您results 上的 FOREIGN KEY 约束指的是另一个表上未编制索引的列。具体来说,您需要在predictors.Predictor_Name 上创建一个索引。这可能也适用于matches.Match_Name 和您定义的其他约束。

但是,您似乎不太可能需要对 ID 以及其他列进行限制。考虑只对 ID 使用约束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2014-12-07
    • 2019-02-27
    • 2016-05-23
    • 2013-03-10
    • 2021-11-05
    相关资源
    最近更新 更多