"外键约束形成错误"尽管数据类型相同

时间:2017-03-01 08:17:50

标签: mysql sql foreign-keys mariadb

我想添加引用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]> 

1 个答案:

答案 0 :(得分:0)

就像@Damien_The_Unbeliever在他们的评论中所说,它应该是references Member(id)

您的.语法表示:架构id 中的参考表Member(但您想引用 {{1 } id