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


当前回答

定义外键的语法是非常宽容的,但对于任何其他人来说,外键必须“具有相同类型”的事实甚至适用于排序,而不仅仅是数据类型、长度和位签名。

并不是说你会在你的模型中混合排序规则(你会吗?),但如果你这样做了,确保你的主键和外键字段在phpmyadmin或Heidi SQL或其他你使用的工具中具有相同的排序规则类型。

希望这能帮你省下我花在试错上的4个小时。

其他回答

我也有同样的问题。

问题是参考列不是主键。

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

这个问题很容易解决

例如:你有两个表的名字用户和帖子,你想创建外键在帖子表和你使用phpMyAdmin

1)在post表中添加新列 (名称:use_id |类型:类似用户表中的id |长度:类似用户表中的id |默认值:NULL |属性:unsigned | index: index)

2)在结构标签进入关系视图 (约束名称:自动设置由phpmyAdmin |列名称:select user_id |表:用户|键:id,…)

它被简单地解决了

Javad mosavi伊朗/urmia

或者您可以使用DBDesigner4,它具有图形界面来创建数据库并使用FK链接它们。右键单击您的表并选择“复制表SQL创建”,这将创建代码。

我刚才也遇到了同样的问题。在我的例子中,我所要做的就是确保我在外键中引用的表必须在当前表之前创建(在代码的前面)。因此,如果你引用一个变量(x*5),系统应该知道x是什么(x必须在前面的代码行中声明)。这解决了我的问题,希望它能帮助其他人。

定义外键的语法是非常宽容的,但对于任何其他人来说,外键必须“具有相同类型”的事实甚至适用于排序,而不仅仅是数据类型、长度和位签名。

并不是说你会在你的模型中混合排序规则(你会吗?),但如果你这样做了,确保你的主键和外键字段在phpmyadmin或Heidi SQL或其他你使用的工具中具有相同的排序规则类型。

希望这能帮你省下我花在试错上的4个小时。