2011-01-09 11 views
1

Was stimmt nicht mit den zwei Fremdschlüsseln, die ich mit Kommentaren markiert habe?MySQL stimmt nicht mit meinen Fremdschlüsseln?

Datenbank erstellen db; benutze db;

Tabelle erstellen Flug (
Flugbez varchar (20),
FDatum Datum,
Ziel varchar (20),
Flugzeit int,
int entfernung,
Primary Key (Flugbez, FDatum));

Tabelle Flugzeugtyp (
Typ VARCHAR (20),
Hersteller VARCHAR (20),
SitzAnzahl int, int
Reisegeschw,
Primärschlüssel (Typ)
) schaffen;

Tabelle flugzeug erstellen (
Typ varchar (20),
Seriennr int,
AnschDatum Datum,
FlugStd int,
Primärschlüssel (Typ, Seriennr),
Fremd Schlüssel (Typ) verweist Flugzeugtyp (Typ));

create table Abflug (
Flugbez varchar (20),
FDatum Datum,
Typ varchar (20),
Seriennr int,
Kaptaen varchar (20),
Primary Schlüssel (Flugbez, FDatum, Typ, Seriennr),
Fremdschlüssel (Flugbez) verweist Flug (Flugbez),
- Fremdschlüssel (FDatum) verweist Flug (FDatum),
Fremdschlüssel (Typ) Referenzen Flugzeugtyp (Typ)
-, Fremdschlüssel (SerienNr) Referenzen Flugzeug (SerienNr)
);

Als ich diese Kommentar-, erhalte ich:

ERROR 1005 (HY000): Can not create table 'db.abflug' (errno: 150)

Ich benutze eine Standard-Installation von MySQL Server 5.5

Antwort

5

Das Problem ist, dass die Primärschlüssel, auf die Sie verweisen, zusammengesetzte Schlüssel sind, aber Sie versuchen nur, eine der Spalten (nicht die erste) in den Fremdschlüsseln zu referenzieren.

Zum Beispiel definieren Sie den Primärschlüssel primary key(Typ,SerienNr) in Tabelle Flugzeug, aber in der Tabelle Abflug versuchen Sie Foreign key(SerienNr) references Flugzeug(SerienNr) zu referenzieren.

Sie müssen den gesamten Schlüssel referenzieren (Foreign key(Typ, SerienNr) references Flugzeug(Typ,SerienNr)).

+0

Danke, es hat funktioniert! Stimme diese Antwort ab! – Skiy

Verwandte Themen