向MySQL表添加外键出错:错误1215(HY000):无法添加外键约束

向MySQL表添加外键出错:错误1215(HY000):无法添加外键约束,mysql,foreign-keys,Mysql,Foreign Keys,当我尝试向表中添加外键约束时,有人能解释一下为什么MySQL会出错吗 这是我的桌子: mysql> desc workflow_stakeholder_sectors; +----------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+------

当我尝试向表中添加外键约束时,有人能解释一下为什么MySQL会出错吗

这是我的桌子:

mysql> desc workflow_stakeholder_sectors;
+----------------+---------+------+-----+---------+----------------+
| Field          | Type    | Null | Key | Default | Extra          |
+----------------+---------+------+-----+---------+----------------+
| id             | int(11) | NO   | PRI | NULL    | auto_increment |
| stakeholder_id | int(11) | NO   |     | NULL    |                |
| sector_id      | int(11) | NO   |     | NULL    |                |
+----------------+---------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

mysql> desc workflow_stakeholder;
+---------------------------------+--------------+------+-----+---------+----------------+
| Field                           | Type         | Null | Key | Default | Extra          |
+---------------------------------+--------------+------+-----+---------+----------------+
| id                              | int(11)      | NO   | PRI | NULL    | auto_increment |
| name                            | varchar(255) | YES  |     | NULL    |                |
| stakeholder_register            | tinyint(1)   | NO   |     | NULL    |                |
| create_date                     | datetime     | YES  |     | NULL    |                |
| edit_date                       | datetime     | YES  |     | NULL    |                |
| country_id                      | int(11)      | NO   | MUL | NULL    |                |
| formal_relationship_document_id | int(11)      | YES  | MUL | NULL    |                |
| sector_id                       | int(11)      | YES  | MUL | NULL    |                |
| type_id                         | int(11)      | YES  | MUL | NULL    |                |
| vetting_document_id             | int(11)      | YES  | MUL | NULL    |                |
| approval                        | varchar(255) | YES  |     | NULL    |                |
| approved_by_id                  | int(11)      | YES  | MUL | NULL    |                |
| filled_by_id                    | int(11)      | YES  | MUL | NULL    |                |
+---------------------------------+--------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)
我正在使用macOS Sierra版本10.12.4和mysql版本14.14发行版5.7.17,用于macos10.12(x86_64),使用EditLine包装器

我使用以下mysql语句添加外键:

ALTER TABLE `workflow_stakeholder_sectors` ADD CONSTRAINT 
`workflow_stak_stakeholder_id_b87707c1_fk_workflow_stakeholder_id` 
FOREIGN KEY (`stakeholder_id`) REFERENCES `workflow_stakeholder` (`id`);
我得到的错误是:

ERROR 1215 (HY000): Cannot add foreign key constraint

导致错误的可能原因有:

  • 一个或两个表是MyISAM或其他存储引擎,而不是InnoDB

    感谢您至少发布了表的
    DESC
    输出, 但是
    DESC
    不显示存储引擎<代码>显示创建表显示 这些信息

  • workflow\u涉众\u扇区中存在引用
    workflow\u涉众
    中缺少的涉众id值的某些行。请尝试以下查询:

    SELECT COUNT(*) FROM workflow_stakeholder_sectors wss 
    LEFT OUTER JOIN workflow_stakeholder ws
      ON wss.stakeholder_id = ws.id
    WHERE ws.id IS NULL
    

谢谢!正如您指出的,问题是一个表有MYISAM存储引擎,另一个表有innodb。