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


当前回答

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

例如

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

试着把它变成

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

....

这对我很管用。

其他回答

我面临这个问题,当你把主键放在不同的数据类型,比如:

表1:

 Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->string('product_name');
        });

表2:

Schema::create('brands', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('brand_name');
        });

第二个表id的数据类型必须为增量

这个问题很容易解决

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

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

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

它被简单地解决了

Javad mosavi伊朗/urmia

我在这里遗漏的另一个解决方案是,在创建约束的表中,引用表的每个主键都应该有一个带有外键的条目。

当使用MyISAM引擎创建父表时,我也遇到了同样的问题。这是一个愚蠢的错误,我用:

ALTER TABLE parent_table ENGINE=InnoDB;

如果一切正常,只需添加->unsigned();在外键的末尾。

如果不行,请检查两个字段的数据类型。它们必须是一样的。