错误添加外键
我有两个表: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)
我在您的其他问题评论回答了这个给你一个小时前,但这里要再次重申:
您可以通过运行SHOW ENGINE INNODB STATUS\G
和读取LATEST FOREIGN KEY ERROR
部分得到该错误的详细信息。
这种故障的最可能的原因:
- tab1.name和tab2.name是不完全一样的数据类型
- tab1.name不是唯一
+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)
也许你的钥匙应该有一个名字?
不,它没有工作。 – 2011-03-15 22:03:36
您不能在默认MySQL存储引擎(ISAM,MyISAM)上定义外键,使用InnoDB作为引擎,然后添加外键约束。
错误意味着这两个表都是InnoDB。 MyISAM不会因为错误而失败,它会让ALTER TABLE完成并且默默无闻,因为它没有外键。 – 2011-03-15 21:36:53
您使用的是什么数据库管理系统(DBMS)?此外,请告诉我们表结构是什么: 'show create table tab1;' 'show create table tab2;' – 2011-03-15 21:28:15