2017-03-01 2 views
1

Ich wollte einen Fremdschlüssel Enrols.mid hinzufügen, die Member.id verweist, aber nach ein paar Versuchen (Hinzufügen von Index, Erstellen von Schlüsseln, googeln) funktioniert es immer noch nicht. Die zwei Spalten haben genau den gleichen Datentyp, warum das Hinzufügen eines Fremdschlüssels nicht funktioniert?"Fremdschlüssel Einschränkung ist falsch gebildet" trotz gleichen Datentyp

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

Sollte es nicht sein, 'Referenzen Mitglied (id) verweisen;'.? –

Antwort

0

Wie @Damien_The_Unbeliever sagte in ihrem Kommentar, sollte es references Member(id) sein.

Ihre . Syntax bedeutet: Referenztabelle id in Schema Member (Aber Sie wollen Spalteid in TabelleMember

Verwandte Themen