需要有关不可思议,可重现的MySQL ERROR 1452(23000)外键约束的帮助

时间:2011-04-06 05:53:37

标签: mysql hibernate macos foreign-key-relationship

在Mac OS / X 10.6上,MySQL select version()为5.5.9

问题

当我执行下面的sql脚本时,遇到一个非常令人困惑的外键约束错误。似乎它不应该抛出这个错误。此外,我知道其他人试图遵循这些步骤但无法复制(参见:http://forums.mysql.com/read.php?10,415350,415350#msg-415350

有人能发现我们做错了什么吗?

要重现:

  1. create database constraint_test;
  2. 创建constraint_test.sql文件并粘贴下面的sql。
  3. 从cmd行执行“mysql constraint_test< constraint_test.sql”(或在我的sql执行“source tmp / constraint_test.sql”
  4. 预期结果行持续存在于客户,受保人和受益人表中。

    实际结果正如您将看到的,我们始终收到的外键约束错误类似于:

    第55行的

    “错误1452(23000):无法添加或更新子行:外键约束失败(constraint_testbeneficiary,CONSTRAINT FK41BADEC55CE3480 FOREIGN KEY({{ 1}})参考insured_idInsured))“

    然而,在父表Insured中肯定存在insured_id。

    如果可以,请帮忙!

    constraint_test.sql内容:

    insured_id

1 个答案:

答案 0 :(得分:0)

您的数据类型不完全匹配:
Benefic.insured_id为bigint,而Insured.insured_id bigint not null

Innodb对这些非常敏感,请确保两个表中的FK列定义完全相同,包括可空性。