ERROR 1005 (HY000): Can't create table 'mydb.#sql-f58_12' (errno: 150)

数据库表中外键加不上?

以前给表中字段加外键,都是加的另一个表的主键,这次同学问我,给一个author表中的name加外键(user表中的username),username不是主键。
alter table author add foreign key(name) references user(username)
然后就是加不上。。。
在这里插入图片描述

  • 原因1
    user表中的username,要成为author中name的外键,username(不是主键)此字段必须加上索引
    alter table user add index(username)

  • 原因2
    username和name者两个字段的类型必须一致。

  • 原因3
    show create table author
    show create table user
    看一下者两个表的类型是否一致
    在这里插入图片描述

  • 原因4
    你的数据库引擎类型是MyISAM

    • 外键
      MyISAM:不支持
      InnoDB:支持
      在这里插入图片描述

谢谢!

猜你喜欢

转载自blog.csdn.net/qq_43371004/article/details/91491804