MySQL错误代码:1005

时间:2010-09-16 22:28:30

标签: sql mysql mysql-error-1005

我正在尝试将外键添加到我的表中但收到此错误。 错误代码:1005无法创建表'william。#sql-88c_3'(错误号:150) 我有3张桌子。员工,客户和合同。

雇员[employee_no PK],客户[customer_no PK]合同[contract_no PK] 我希望合同的外键是合约[contract_no PK,employee_no FK],customer_no FK]

我试图直接做失败,我现在正在尝试alter语句.Alter脚本有什么问题吗?

    ALTER TABLE contract
    ADD CONSTRAINT `employee_no_fk2` FOREIGN KEY (`employee_no`) REFERENCES `employee` 
    (`employee_no`);


   ALTER TABLE contract
    ADD CONSTRAINT `Customer_no_fk2` FOREIGN KEY (`Customer_no`) REFERENCES `client` 
    (`Customer_no`);

4 个答案:

答案 0 :(得分:10)

大多数此类错误都与数据类型未命中匹配有关。如果您可以浏览这些链接..它可能对您有帮助我猜... Check-this ......还Check-this

正如他们在第二个链接中所说:

  

您应该首先看看数据类型是否一致   外键和主键列之间。

mysql> SHOW engine innodb STATUS;

------------------------
LATEST FOREIGN KEY ERROR
------------------------
100130 17:16:57 Error IN FOREIGN KEY CONSTRAINT OF TABLE sampledb/#sql-4a0_2:
FOREIGN KEY(member_type)
REFERENCES common_lookup(common_lookup_id):
Cannot find an INDEX IN the referenced TABLE WHERE the
referenced COLUMNS appear AS the FIRST COLUMNS, OR COLUMN types
IN the TABLE AND the referenced TABLE do NOT MATCH FOR CONSTRAINT.

答案 1 :(得分:2)

确保您尝试引用的某个关键字段没有索引和/或不是主键。并且两个关键字段类型和/或大小应该是完全匹配,同时确保两个表都是InnoDB表。

答案 2 :(得分:1)

这可能由于两个原因而发生

  1. 表创建失败,因为未正确形成外键约束或
  2. 约束中的数据类型不匹配。
  3. 以下链接会有所帮助

    http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html

答案 3 :(得分:0)

上次我遇到这个时,就是约束:引用的表键类型是'int'而引用表错误地引用了'unsigned int'字段,而不是int。