错误添加外键

问题描述:

我有两个表:tab1,tab2错误添加外键

我想添加一个外键TAB2,写此查询

ALTER TABLE tab2 
ADD FOREIGN KEY(name) REFERENCES tab1(name) 

但我得到这个错误:

error 1005(HY000):can't create table 'club.#sql-6f0_2' (errno:150) 

哪里不对?

Edit 

i write this tables only for test. 

tab1 

name char(20) private key 

lname char(20) 


tab2 

ssn int private key 

name char(20) 
+0

您使用的是什么数据库管理系统(DBMS)?此外,请告诉我们表结构是什么: 'show create table tab1;' 'show create table tab2;' – 2011-03-15 21:28:15

我在您的其他问题评论回答了这个给你一个小时前,但这里要再次重申:

您可以通过运行SHOW ENGINE INNODB STATUS\G和读取LATEST FOREIGN KEY ERROR部分得到该错误的详细信息。

这种故障的最可能的原因:

  • tab1.name和tab2.name是不完全一样的数据类型
  • tab1.name不是唯一
+0

+1:1005/150错误也记录在案:http://dev.mysql.com /doc/refman/5.5/en/innodb-foreign-key-constraints.html – 2011-03-15 21:39:17

试试这个:

alter table tab2 
add foreign key my_key(name) references tab1(name) 

也许你的钥匙应该有一个名字?

+0

不,它没有工作。 – 2011-03-15 22:03:36

您不能在默认MySQL存储引擎(ISAM,MyISAM)上定义外键,使用InnoDB作为引擎,然后添加外键约束。

+2

错误意味着这两个表都是InnoDB。 MyISAM不会因为错误而失败,它会让ALTER TABLE完成并且默默无闻,因为它没有外键。 – 2011-03-15 21:36:53