Mysql外键(150外键约束格式错误)

时间:2019-02-27 10:05:10

标签: php mysql sql database foreign-keys

create table Bands(
    band_ID int NOT NULL AUTO_INCREMENT,
    band_name varchar(20) NOT NULL,
    band_year int NOT NULL,
    PRIMARY KEY (band_ID)
);

create table Albums(
    album_ID int NOT NULL AUTO_INCREMENT,
    album_name varchar(20) NOT NULL, 
    band_name varchar(20) NOT NULL,
    PRIMARY KEY (album_ID),
    FOREIGN KEY (band_name) REFERENCES Bands(band_name)
);

有人可以帮我处理我的MySQL语句吗?我以为首先是类型冲突,但事实并非如此。我不确定是什么原因导致错误

1 个答案:

答案 0 :(得分:3)

您需要约束所引用的列要么是被引用表的主键(最佳实践),要么至少具有索引。

来自the documentation

  

MySQL要求在外键和引用键上建立索引,以便外键检查可以快速进行,而无需进行表扫描。

最底线:为什么不在专辑表中存储(并参考)乐队ID而不是乐队名称?似乎这样会更好地响应您的用例。