Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL错误代码:1005_Sql_Mysql_Mysql Error 1005 - Fatal编程技术网

MySQL错误代码:1005

MySQL错误代码:1005,sql,mysql,mysql-error-1005,Sql,Mysql,Mysql Error 1005,我试图将外键添加到表中,但收到此错误。 错误代码:1005无法创建表“william.#sql-88c_3”(错误号:150) 我有三张桌子。员工、客户和合同 员工[员工主键],客户[客户主键]合同[合同主键] 我想要合同的外键作为合同[合同编号PK,员工编号FK],客户编号FK] 我试图直接执行,但失败了,我现在正在尝试alter语句。alter脚本有什么问题吗 ALTER TABLE contract ADD CONSTRAINT `employee_no_fk2` FORE

我试图将外键添加到表中,但收到此错误。 错误代码:1005无法创建表“william.#sql-88c_3”(错误号:150) 我有三张桌子。员工、客户和合同

员工[员工主键],客户[客户主键]合同[合同主键] 我想要合同的外键作为合同[合同编号PK,员工编号FK],客户编号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`);

大多数此类错误都与数据类型未匹配有关。。如果你能浏览这些链接。。我想这可能对你有帮助。。 ... 也

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

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


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

发生这种情况有两个原因

  • 表创建失败,因为外键约束的格式不正确或
  • 约束中的数据类型不匹配。
  • 下面的链接会很有帮助


    上次我遇到这个问题时,是因为约束:引用的表键类型是“int”,引用的表错误地使用了“unsigned int”引用字段,而不是int。

    第二个链接非常有用。我试图添加一个on delete集为null的外键,但我的目标列没有null约束,这给了我这个问题。我可以通过
    显示引擎innodb状态来解决问题命令。第二链接ftw!我是按照他描述的那样做的:“我遇到的最常见的变化是主键列使用int无符号数据类型,外键列使用int数据类型。InnoDB引擎停止这种冷态非常好。当然,您可以通过更改外键数据类型以匹配int无符号数据类型来修复它。”
    
    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.