MySQL-Fehler 1452 - Hinzufügen oder Aktualisieren einer untergeordneten Zeile nicht möglich: Eine Fremdschlüsseleinschränkung schlägt fehl
Ich habe ein merkwürdiges Problem. Ich versuche, einer Tabelle, die auf eine andere verweist, einen Fremdschlüssel hinzuzufügen, aber aus irgendeinem Grund schlägt dies fehl. Aufgrund meiner begrenzten MySQL-Kenntnisse besteht der einzige Verdacht, dass sich in einer anderen Tabelle ein Fremdschlüssel befindet, der auf denjenigen verweist, auf den ich verweisen möchte.
Hier ist ein Bild meiner Tabellenbeziehungen, die über phpMyAdmin generiert wurden:Beziehungen
Ich habe einen gemachtSHOW CREATE TABLE
Abfrage für beide Tabellen,sourcecodes_tags
ist die Tabelle mit dem Fremdschlüssel,sourcecodes
ist die referenzierte Tabelle.
CREATE TABLE `sourcecodes` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`language_id` int(11) unsigned NOT NULL,
`category_id` int(11) unsigned NOT NULL,
`title` varchar(40) CHARACTER SET utf8 NOT NULL,
`description` text CHARACTER SET utf8 NOT NULL,
`views` int(11) unsigned NOT NULL,
`downloads` int(11) unsigned NOT NULL,
`time_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `language_id` (`language_id`),
KEY `category_id` (`category_id`),
CONSTRAINT `sourcecodes_ibfk_3` FOREIGN KEY (`language_id`) REFERENCES `languages` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `sourcecodes_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `sourcecodes_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
CREATE TABLE `sourcecodes_tags` (
`sourcecode_id` int(11) unsigned NOT NULL,
`tag_id` int(11) unsigned NOT NULL,
KEY `sourcecode_id` (`sourcecode_id`),
KEY `tag_id` (`tag_id`),
CONSTRAINT `sourcecodes_tags_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Es wäre großartig, wenn mir jemand sagen könnte, was hier vor sich geht, ich habe keine formelle Ausbildung oder irgendetwas mit MySQL gehabt :)
Vielen Dank.
Bearbeiten: Dies ist der Code, der den Fehler erzeugt:
ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADE