添加外键时出错

时间:2011-03-15 21:24:59

标签: mysql sql foreign-keys mysql-error-1005

我有两张桌子: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)

3 个答案:

答案 0 :(得分:4)

我在大约一个小时之前就你的另一个问题发表评论时回答了这个问题,但这又是:

您可以通过运行SHOW ENGINE INNODB STATUS\G并阅读LATEST FOREIGN KEY ERROR部分来获取有关该错误的详细信息。

这种失败的最可能原因是:

  • tab1.name和tab2.name的数据类型不完全相同
  • tab1.name不是唯一的

答案 1 :(得分:0)

试试这个:

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

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

答案 2 :(得分:0)

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