use*_*883 147 mysql sql heidisql
我有两个表,table1是一列父表ID,并table2与一列IDFromTable1(而不是实际的名称),当我把一个FK上IDFromTable1,以ID在table1我得到的错误Foreign key constraint is incorrectly formed error.如果table1记录被删除,我想删除表2记录.谢谢你的帮助
ALTER TABLE `table2`
ADD CONSTRAINT `FK1`
FOREIGN KEY (`IDFromTable1`) REFERENCES `table1` (`ID`)
ON UPDATE CASCADE
ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)
如果需要任何其他信息,请与我们联系.我是mysql的新手
Jak*_*son 343
我遇到了与HeidiSQL相同的问题.你收到的错误非常神秘.我的问题最终是外键列和引用列的类型或长度不同.
外键列是SMALLINT(5) UNSIGNED和引用的列INT(10) UNSIGNED.一旦我将它们设置为完全相同的类型,外键创建就完美无缺.
Den*_*sky 39
使用MyISAM引擎创建父表时,我遇到了同样的问题.这是一个愚蠢的错误,我修复了:
ALTER TABLE parent_table ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
小智 34
对于遇到此问题的任何人,只需运行
SHOW ENGINE INNODB STATUS
并查看最新的外键错误部分以获取详细信息。
小智 25
确保列是相同的(相同类型),如果列不相同primary_key,请确保它是INDEXED.
小智 20
定义外键的语法是非常宽容的,但是对于其他任何人来说,外键必须是"相同类型"的事实甚至适用于整理,而不仅仅是数据类型和长度以及位签名.
并不是说您在模型中混合了排序规则(不是吗?)但是如果这样做,请确保您的主键和外键字段在phpmyadmin或Heidi SQL或您使用的任何类型中具有相同的排序规则类型.
希望这能为您节省四个小时的试用和错误.
小智 10
刚完成.
如果您使用VARCHAR(..)的外键并且引用的表的字符集与引用它的表不同,则此错误也可能是这种情况.
例如,Latin1表中的VARCHAR(50)与UTF8表中的VARCHAR(50)不同.
Ren*_*tin 10
我有同样的问题,但解决了它.
只需确保'table1'中的列'ID'具有UNIQUE索引!
当然,这两个表中列'ID'和'IDFromTable1'的类型,长度必须相同.但是你已经知道了这一点.
小智 7
Laravel当您在引用外键表的table1迁移之后进行外键表迁移时,也会出现此问题table2。
您必须保留迁移的顺序才能使foreign key功能正常工作。
database/migrations/2020_01_01_00001_create_table2_table.php
database/migrations/2020_01_01_00002_create_table1_table.php
Run Code Online (Sandbox Code Playgroud)
应该:
database/migrations/2020_01_01_00001_create_table1_table.php
database/migrations/2020_01_01_00002_create_table2_table.php
Run Code Online (Sandbox Code Playgroud)
小智 6
(Last Resent) 即使字段名称和数据类型相同但排序规则不相同,也会导致该问题。
例如
TBL 名称 | 数据类型 | 整理
活动ID | 国际 | latin1_general_ci ActivityID | 国际 | utf8_general_ci
试试改成
TBL 名称 | 数据类型 | 整理
活动ID | 国际 | latin1_general_ci ActivityID | 国际 | latin1_general_ci
....
这对我有用。
我遇到了同样的问题,两列均为INT(11)NOT NULL,但我无法创建外键。我必须禁用外键检查才能成功运行它:
SET FOREIGN_KEY_CHECKS=OFF;
ALTER TABLE ... ADD CONSTRAINT ...
SET FOREIGN_KEY_CHECKS=ON;
Run Code Online (Sandbox Code Playgroud)
希望这对某人有帮助。
| 归档时间: |
|
| 查看次数: |
249045 次 |
| 最近记录: |