我有两个表,table1是一个列ID的父表,table2是一个列IDFromTable1(不是实际的名称),当我把一个FK IDFromTable1到ID在table1,我得到的错误外键约束是不正确形成的错误。我想删除表2记录,如果表1记录被删除。谢谢你的帮助

ALTER TABLE `table2`  
   ADD CONSTRAINT `FK1` 
      FOREIGN KEY (`IDFromTable1`) REFERENCES `table1` (`ID`) 
      ON UPDATE CASCADE 
      ON DELETE CASCADE;

如果还需要其他信息,请告诉我。我是mysql的新手


当前回答

我正在使用HeidiSQL,为了解决这个问题,我必须在引用表中创建一个索引,其中所有列都被引用。

其他回答

我也犯了同样的错误,我发现在我自己的案例中,一张表是MyISAM,另一张是INNO。一旦我把MyISAM表切换到INNO。这解决了问题。

显示此错误的另一个可能原因。我创建表的顺序是错误的。我试图从一个尚未创建的表中引用一个键。

我也有同样的问题。

问题是参考列不是主键。

把它设为主键,问题就解决了。

我在Laravel 5.1迁移Schema Builder到MariaDB 10.1时也遇到了同样的问题。

问题是我在设置列时输入了unsigned而不是unsigned(s字母不见了)。

修复后,错别字为我修复。

即使字段名和数据类型相同,但排序规则不相同,也会导致该问题。

例如

资源描述 name | data 类型           | 排序 ActivityID           |         INT                         | latin1_general_ci ActivityID           |         INT                         | utf8_general_ci

试着把它变成

资源描述 name | data 类型           | 排序 ActivityID           |         INT                         | latin1_general_ci ActivityID           |         INT                         | latin1_general_ci

....

这对我很管用。