我想添加引用Enrols.mid
的外键Member.id
,但经过几次尝试(添加索引,创建密钥,googleing)后,它仍然无法正常工作。
这两列具有完全相同的数据类型,为什么添加外键不起作用?
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]>
答案 0 :(得分:0)
就像@Damien_The_Unbeliever在他们的评论中所说,它应该是references Member(id)
。
您的.
语法表示:架构id
中的参考表Member
(但您想引用列 {{1 } 表 id
。