【问题标题】:error in adding foreign key添加外键错误
【发布时间】:2011-03-15 21:24:58
【问题描述】:

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

【问题讨论】:

  • 您使用的是什么数据库管理系统 (DBMS)?另外,告诉我们表结构是什么:show create table tab1;show create table tab2;

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


【解决方案1】:

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

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

此失败的最可能原因:

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

【讨论】:

【解决方案2】:

试试这个:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 该错误意味着表都是 InnoDB。 MyISAM 不会因错误而失败,它会让 ALTER TABLE 完成并默默地什么都不做,因为它没有外键。
    猜你喜欢
    • 1970-01-01
    • 2019-10-19
    • 2021-09-11
    • 2018-02-09
    • 2019-02-09
    • 2018-04-05
    • 2018-05-27
    • 2020-09-14
    • 1970-01-01
    相关资源
    最近更新 更多