我有两个表,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的新手


当前回答

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

其他回答

只是为了完成。

如果你有一个VARCHAR(..)外键,并且被引用的表的字符集与引用它的表的字符集不同,也可能会出现这个错误。

例如,Latin1表中的VARCHAR(50)与UTF8表中的VARCHAR(50)不同。

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

我在Symfony 2.8上也遇到了同样的问题。

我一开始没有得到它,因为外键的int长度等没有类似的问题。

最后,我必须在项目文件夹中执行以下操作。(服务器重启不起作用!)

应用程序/控制台学说:缓存:clear-metadata 应用程序/控制台学说:缓存:clear-query 应用程序/控制台学说:缓存:明确的结果

Mysql错误文本没有那么多的帮助,在我的情况下,列有“不空”约束,所以“删除设置空”是不允许的

我在使用HeidiSQL时也遇到了同样的问题。您收到的错误非常神秘。我的问题是外键列和引用列的类型或长度不相同。

外键列是SMALLINT(5) UNSIGNED,引用列是INT(10) UNSIGNED。一旦我将它们都设置为完全相同的类型,外键的创建就会完美地工作。