我正在尝试将外键添加到我的表中,但收到此错误。
错误代码:1005 无法创建表“william.#sql-88c_3”(errno:150)
我有3张桌子。员工、客户和合同。
员工 [employee_no PK] 、客户 [customer_id PK] 合同 [contract_no PK]
我想要合同的外键作为合同 [contract_no PK,employee_id FK],customer_id 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`);
大多数此类错误都与数据类型丢失匹配等有关。如果您可以浏览这些链接,我想它可能会对您有所帮助。检查这个 http://sql-info.de/mysql/referential-integrity.html... 还检查这个 http://blog.mclaughlinsoftware.com/2010/01/30/decoding-1005-on-mysql/
正如他们在第二个链接中所说:
您应该首先检查数据类型是否一致
外键列和主键列之间。
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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)