2016-03-21 9 views
0

Ich versuche, diese Werte in die ARTIST_NAME Spalte auf einem meiner Tabellen in meiner MySQL-DatenbankIch kann nicht Wert in meine Tabelle einfügen auf MySQL

INSERT INTO tbl_Artist (Artist_Name)VALUES ('Taylor Swift'); 
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Elton John'); 
INSERT INTO tbl_Artist (Artist_Name)VALUES ('Kanye West'); 
INSERT INTO tbl_Artist (Artist_Name) VALUES ('Fallout Boy'); 

einfügen Aber immer, wenn ich versuche, halte ich immer diese Fehlermeldung !

#1452 - Cannot add or update a child row: a foreign key constraint fails 
(`b4014107_db2/tbl_Artist`, CONSTRAINT `tbl_Artist_ibfk_1` FOREIGN KEY 
(`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`) 

ich davon aus bin es ist etwas, mit dem Fremdschlüssel muss ich auf die KUENSTLER_ID Spalte in der Tabelle selbst zugewiesen haben. Ich bin nur unsicher, was das Problem ist und wie es zu beheben ist.

Ich kann Ihnen den ganzen Code für die Tabelle zur Verfügung stellen, wenn das hilft.

CREATE TABLE `tbl_Artist` ( `Artist_id` int(11) NOT NULL auto_increment,   
`Artist_Name` varchar(32) NOT NULL,  PRIMARY KEY  (`Artist_id`),  CONSTRAINT 
`tbl_Artist_ibfk_1` FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist` 
(`Artist_id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 

Jede Hilfe würde sehr geschätzt werden.

Antwort

2

Dies ist Ihre Tabellendefinition:

CREATE TABLE `tbl_Artist` (
    `Artist_id` int(11) NOT NULL auto_increment,  
    `Artist_Name` varchar(32) NOT NULL, 
    PRIMARY KEY (`Artist_id`), 
    CONSTRAINT `tbl_Artist_ibfk_1` FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 

Dies ist eigentlich irgendwie komisch. Sie haben einen Fremdschlüsselverweis für den Primärschlüssel zurück zum Primärschlüssel der Tabelle. Daher können Sie niemals Zeilen einfügen, da Sie auf eine Zeile verweisen müssen.

In jedem Fall sollte ein Primärschlüssel kein Fremdschlüssel sein. So fallen nur die Einschränkung:

CREATE TABLE `tbl_Artist` (
    `Artist_id` int(11) NOT NULL auto_increment,  
    `Artist_Name` varchar(32) NOT NULL, 
    PRIMARY KEY (`Artist_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 
+0

Ich habe versucht, den Fremdschlüssel fallen zu lassen, aber ich bekomme jetzt den Fehler Fehler beim Umbenennen von './b4014107_db2/tbl_Artist' in './b4014107_db2/#sql2-1ebb-382' (errno: 152 –

+0

@JackRogers. Lassen Sie die Tabelle fallen und erstellen Sie sie erneut –

+0

Aber die Artist_id ist ein Fremdschlüssel, der mit zwei anderen Tabellen verknüpft ist, müsste ich diese auch löschen? –

0

Ihr Problem ist, dass Fremdschlüssel macht, dass Sie nur eine Zeile mit einer ID einfügen, die bereits auf dem Tisch vorhanden ist. Die Lösung besteht darin, diese Einschränkung zu löschen und nur den Primärschlüssel zu belassen. Fremdschlüssel werden verwendet, um Integritätsprüfungen zwischen Tabellen zu erstellen. Zum Beispiel eine Album-Tabelle mit einem Fremdschlüssel für die Artist-Tabelle.

Verwandte Themen