插入多个MySQL外键时出错

插入多个MySQL外键时出错,mysql,Mysql,当我尝试在SQL中将当前表插入我的表时,我得到一个错误(Products表): 我得到以下信息: #1005 - Can't create table '.\db_project\#sql-b58_6d.frm' (errno: 150) 我确信这与这个关系中的几个外键有关,我在互联网上搜索了一下,但找不到解决方案。我认为问题可能是您定义外键指向的某个表没有您指向的索引外键字段 要使外键工作,您所指向的字段需要有索引 看 此外,请检查您是否满足创建密钥的所有条件。两个表中的列必须: 必须是相

当我尝试在SQL中将当前表插入我的表时,我得到一个错误(Products表):

我得到以下信息:

#1005 - Can't create table '.\db_project\#sql-b58_6d.frm' (errno: 150)

我确信这与这个关系中的几个外键有关,我在互联网上搜索了一下,但找不到解决方案。

我认为问题可能是您定义外键指向的某个表没有您指向的索引外键字段

要使外键工作,您所指向的字段需要有索引

此外,请检查您是否满足创建密钥的所有条件。两个表中的列必须:

  • 必须是相同的数据类型
  • 大小或长度相同
  • 定义索引
      没有由.SSN提供的列

      FOREIGN KEY (Onr) REFERENCES SuppliedBy(SSN)
      
      也许你的意思是

      FOREIGN KEY (Onr) REFERENCES SuppliedBy(Onr)
                                  ON DELETE CASCADE
                                  ON UPDATE CASCADE,
      

      请向我们展示外键引用的表的表定义。发布由和父级提供的相关表的
      CREATE table
      。如果此表中关系的列定义不完全匹配,您将得到错误150。也就是说,
      parent.Barcode
      也必须是
      INT(9)
      。@Michael我相信如果其他表使用不支持索引或外键的引擎,这也是正确的,尽管我不是100%确定。您好!正如您所要求的,我现在已经更新了表。如果不存在索引,MySQL将创建索引。如果在删除外键约束之前尝试删除索引,将出现错误150。而不是在引用的表上。不会的。两个表都需要索引。我相信你误解了我的答案。添加外键会在两侧添加索引。虽然很明显,如果您在表创建中内联外键,它将不会自己完成这项工作…感谢您确认这一点。请取消否决票好吗?我相信这回答了正确的问题。在承认我错了之后,我立即取消了我的否决票;)因为。
      FOREIGN KEY (Onr) REFERENCES SuppliedBy(Onr)
                                  ON DELETE CASCADE
                                  ON UPDATE CASCADE,