MySQL外键约束

MySQL外键约束,mysql,Mysql,我无法找出这个错误: 无法添加或更新子行:外键约束失败(运费费率详细信息,约束费率详细信息

我无法找出这个错误:

无法添加或更新子行:外键约束失败(
运费
费率详细信息
,约束
费率详细信息
外键(
组件id
)引用
计算(
id
)更新级联)

以下是我试图做的(从日志中):

我反复查看并查看了表
计算中
id
的值,该情况下的值为:01

这有什么问题

我刚刚发现参考表是
MyISAM
而不是
InnoDB
,它会影响吗

对。如以下文件所述:

父表和子表必须使用相同的存储引擎

它接着说:

对于不支持外键的存储引擎(例如),MySQL服务器解析并忽略外键规范


您的
component\u id
列的数据类型是什么?检查component\u id列的类型和长度是否与计算中的id列的类型和长度相同。@eggyal:它们都是
int
,长度:11只是一个旁注(与您的问题无关):
int
没有“长度”。11只是显示数据时要使用的客户端应用程序的提示。它不会以任何方式限制可能的值。您可以在
int(1)
int(11)
@eggshot中存储相同的值:是的,这就是问题所在。MySQL要求两个表使用相同的存储引擎(而不是MyISAM),以便外键约束能够工作。
INSERT INTO freight.rates_detail(rate_id,component_id,uom,rate,inc_or) values(0821,01,00,011.00,'Y')