我有两个桌子: 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不是唯一的

其他提示

尝试这个:

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top