php - Mysql Foreign key (150 外键约束不正确)

标签 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 语句吗?我认为首先是类型冲突,但事实并非如此。我不确定是什么导致了错误

最佳答案

您需要由约束引用的列是引用表的主键(最佳实践)或至少有一个索引。

来自 the documentation :

MySQL requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan.

底线:为什么不在专辑表中存储(和引用)乐队 ID 而不是乐队名称?看起来这样会更好地响应您的用例。

关于php - Mysql Foreign key (150 外键约束不正确),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54902834/

相关文章:

PHP- Codeigniter - 返回修剪后的所有输入数据

mysql - 将 mysql 查询结果转换为 CSV(使用复制/粘贴)

mysql - 优化查询以不使用文件排序

mysql - 如何在范围列表之间选择行

sql - 如何记录数据库

php - 将文件存储在服务器上的什么位置,以便无法通过浏览器访问它们?

php - Twitter OAuth 通过本地主机连接,在实时版本上失败?

php - Doctrine 防止连接表中自引用的组合

mysql - 连接到 OpenShift 的 mysql 时表不存在

mysql - Mac OSX MySQL 更新存储过程