0

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

3 回答 3

4

大约一个小时前,我在对您的另一个问题的评论中为您回答了这个问题,但又是这样:

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

此失败的最可能原因:

  • tab1.name 和 tab2.name 不是完全相同的数据类型
  • tab1.name 不是唯一的
于 2011-03-15T21:29:05.770 回答
0

试试这个:

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

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

于 2011-03-15T21:31:21.180 回答
0

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

于 2011-03-15T21:32:17.640 回答