"Foreign key constraint is incorrectly formed" 尽管数据类型相同
"Foreign key constraint is incorrectly formed" despite same data type
我想添加一个引用 Member.id
的外键 Enrols.mid
,但经过几次尝试(添加索引、创建键、谷歌搜索)后它仍然无法正常工作。
两列具有完全相同的数据类型,为什么添加外键不起作用?
MariaDB [alumni]> alter table Enrols add foreign key (`mid`) references Member.id;
ERROR 1005 (HY000): Can't create table `alumni`.`#sql-31e_21d` (errno: 150 "Foreign key constraint is incorrectly formed")
MariaDB [alumni]> desc Member;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id | char(8) | NO | PRI | | |
| cName | varchar(8) | NO | | NULL | |
| eName | varchar(40) | NO | | NULL | |
| gender | char(1) | NO | | NULL | |
| org | varchar(40) | YES | | NULL | |
| pos | varchar(20) | YES | | NULL | |
| hobby | int(11) | NO | | NULL | |
| issueDate | date | NO | | NULL | |
| note | text | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
9 rows in set (0.01 sec)
MariaDB [alumni]> desc Enrols;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| aid | int(11) | NO | PRI | NULL | |
| mid | char(8) | NO | PRI | | |
| paid | date | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
4 rows in set (0.01 sec)
MariaDB [alumni]>
如@Damien_The_Unbeliever 在他们的评论中所说,应该是 references Member(id)
。
你的 .
语法意味着: reference table id
in Schema Member
(但是你想引用 列 id
在table Member
.
我想添加一个引用 Member.id
的外键 Enrols.mid
,但经过几次尝试(添加索引、创建键、谷歌搜索)后它仍然无法正常工作。
两列具有完全相同的数据类型,为什么添加外键不起作用?
MariaDB [alumni]> alter table Enrols add foreign key (`mid`) references Member.id;
ERROR 1005 (HY000): Can't create table `alumni`.`#sql-31e_21d` (errno: 150 "Foreign key constraint is incorrectly formed")
MariaDB [alumni]> desc Member;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id | char(8) | NO | PRI | | |
| cName | varchar(8) | NO | | NULL | |
| eName | varchar(40) | NO | | NULL | |
| gender | char(1) | NO | | NULL | |
| org | varchar(40) | YES | | NULL | |
| pos | varchar(20) | YES | | NULL | |
| hobby | int(11) | NO | | NULL | |
| issueDate | date | NO | | NULL | |
| note | text | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
9 rows in set (0.01 sec)
MariaDB [alumni]> desc Enrols;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| aid | int(11) | NO | PRI | NULL | |
| mid | char(8) | NO | PRI | | |
| paid | date | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
4 rows in set (0.01 sec)
MariaDB [alumni]>
如@Damien_The_Unbeliever 在他们的评论中所说,应该是 references Member(id)
。
你的 .
语法意味着: reference table id
in Schema Member
(但是你想引用 列 id
在table Member
.