2016-04-14 8 views
1

Ich erhalte eine Fehlermeldung, wenn Foreign Keys zum System hinzugefügt, sagt der Fehler Cannot add foreign key constraint und der Code, den ich habe, ist:Fehler 1215 in MySQL, wenn Fremdschlüsseln Hinzufügen

DROP TABLE IF EXISTS Formed; 
DROP TABLE IF EXISTS Album; 
DROP TABLE IF EXISTS Band; 
DROP TABLE IF EXISTS Customers; 
DROP TABLE IF EXISTS Track; 

CREATE TABLE Formed(
    FormedID int NOT NULL, 
    YearFormed int, 
    CountryFormed varchar(50), 
    CityFormed varchar(50), 
    BandMembers varchar(400), 
    PRIMARY KEY(FormedID)) 
    ENGINE=InnoDB; 

CREATE TABLE Track (
    TrackID int NOT NULL, 
    AlbumID int NOT NULL, 
    Songs varchar (100), 
    TrackNumber varchar (20), 
    Title varchar (30), 
    TrackDuration varchar (4), 
    PRIMARY KEY (TrackID)) 
    ENGINE=InnoDB; 

CREATE TABLE Album(
    AlbumID int NOT NULL, 
    TrackID int NOT NULL, 
    BandID int NOT NULL, 
    KEY(TrackID), 
    KEY(BandID), 
    Price varchar(5), 
    PublicationDate varchar(11), 
    Title varchar(30), 
    Genre varchar (36), 
    PRIMARY KEY(AlbumID)) 
    ENGINE=InnoDB; 

CREATE TABLE Band(
    BandID int NOT NULL, 
    AlbumID int NOT NULL, 
    KEY(AlbumID), 
    RecordLabel varchar(50), 
    PRIMARY KEY(BandID)) 
    ENGINE=InnoDB; 

CREATE TABLE Customers (
    CustomerID int NOT NULL, 
    CName varchar (20), 
    CPhone int (11), 
    CEmail varchar (50), 
    CPPaid varchar (50), 
    CPDate date, 
    PRIMARY KEY (CustomerID)) 
    ENGINE=InnoDB; 

ALTER TABLE Track 
ADD FOREIGN KEY (AlbumID) REFERENCES Album(AlbumID)ON DELETE SET NULL ON UPDATE CASCADE; 

ALTER TABLE Album 
ADD FOREIGN KEY (TrackID) REFERENCES Track(TrackID)ON DELETE SET NULL ON UPDATE CASCADE; 

ALTER TABLE Album 
ADD FOREIGN KEY (BandID) REFERENCES Band(BandID)ON DELETE SET NULL ON UPDATE CASCADE; 

ALTER TABLE Band 
ADD FOREIGN KEY (AlbumID) REFERENCES Album(AlbumID)ON DELETE SET NULL ON UPDATE CASCADE; 

Ich bin neu Foreign Keys zum Hinzufügen in MySQL und ich verstehe nicht, wie ich diesen Fehler bekomme. Ich erhalte den Fehler, wenn er die Linie ALTER TABLE Track ADD FOREIGN KEY (AlbumID) REFERENCES Album(AlbumID)ON DELETE SET NULL ON UPDATE CASCADE; trifft, und ich glaube, dass es den gleichen Fehler für die Linien verursachen wird, die nach ihm auch kommen.

Antwort

2

Sie können ON DELETE SET NULL für Felder, für die keine Nullwerte zulässig sind, nicht bereitstellen.

+0

Danke! Es funktioniert jetzt :) – smitthy

Verwandte Themen