Beim Hinzufügen eines Fremdschlüssels zu einer vorhandenen Tabelle, die auf eine andere verweist, ist es wichtig, sicherzustellen, dass die referenzierten Zeilen in der übergeordneten Tabelle vorhanden sind. Andernfalls kann der Fehler „Eine untergeordnete Zeile kann nicht hinzugefügt oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl“ auftreten.
Im bereitgestellten Fall versuchen Sie, einen Fremdschlüssel (sourcecode_id) in der Tabelle „sourcecodes_tags“ hinzuzufügen, auf die verwiesen wird die Quellcodetabelle. Basierend auf Ihren SHOW CREATE TABLE-Abfragen scheint jedoch kein Fremdschlüssel in der Tabelle „sourcecodes_tags“ definiert zu sein, die auf die Tabelle „sourcecodes“ verweist.
Die Fehlermeldung weist darauf hin, dass eine Fremdschlüsselverletzung vorliegt, was bedeutet, dass eine sourcecode_id Werte in der Tabelle „sourcecodes_tags“ sind in der Tabelle „sourcecodes“ nicht vorhanden. Um dieses Problem zu beheben, müssen Sie diese verwaisten Datensätze identifizieren und entfernen.
Identifizieren verwaister Datensätze
Um die sourcecode_id-Werte zu finden, die in der Quellcodetabelle nicht vorhanden sind, Sie können die folgende Abfrage verwenden:
SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL;
Diese Abfrage gibt die sourcecode_id-Werte zurück, die keiner Zeile in zugeordnet sind Quellcodetabelle.
Entfernen verwaister Datensätze
Sobald Sie die verwaisten Datensätze identifiziert haben, können Sie sie mit einer DELETE-Anweisung löschen:
DELETE FROM sourcecodes_tags WHERE sourcecode_id IN ( SELECT DISTINCT sourcecode_id FROM sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id WHERE sc.id IS NULL );
Nachdem Sie die verwaisten Datensätze entfernt haben, sollten Sie die Fremdschlüsseleinschränkung ohne Probleme hinzufügen können.
ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADE;
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Foreign Key Constraint Fails' in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!