在Mac OS / X 10.6上,MySQL select version()为5.5.9
问题
当我执行下面的sql脚本时,遇到一个非常令人困惑的外键约束错误。似乎它不应该抛出这个错误。此外,我知道其他人试图遵循这些步骤但无法复制(参见:http://forums.mysql.com/read.php?10,415350,415350#msg-415350)
有人能发现我们做错了什么吗?
要重现:
预期结果行持续存在于客户,受保人和受益人表中。
实际结果正如您将看到的,我们始终收到的外键约束错误类似于:
第55行的“错误1452(23000):无法添加或更新子行:外键约束失败(constraint_test
。beneficiary
,CONSTRAINT FK41BADEC55CE3480
FOREIGN KEY({{ 1}})参考insured_id
(Insured
))“
然而,在父表Insured中肯定存在insured_id。
如果可以,请帮忙!
constraint_test.sql内容:
insured_id
答案 0 :(得分:0)
您的数据类型不完全匹配:
Benefic.insured_id为bigint
,而Insured.insured_id bigint not null
Innodb对这些非常敏感,请确保两个表中的FK列定义完全相同,包括可空性。