web-dev-qa-db-de.com

1452 - Eine untergeordnete Zeile kann nicht hinzugefügt oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl

Ich erhalte diesen Fehler: 

1452 - Eine untergeordnete Zeile kann nicht hinzugefügt oder aktualisiert werden: eine Fremdschlüsseleinschränkung schlägt fehl.

Ich habe sie gefunden und versuche die Referenzen mit zu entfernen

alter table tillhör drop foreign key kat_id;

Stattdessen diesen Fehler erhalten:

# 1025 - Fehler beim Umbenennen von '.\Recept\tillh @ 1ir' in '.\recept # sql2-1570-3cb' (Fehlernummer: 152).

Was mache ich falsch?

16
Mia Raunegger

Bevor Sie die Abfrage ausführen

SET FOREIGN_KEY_CHECKS=0

dann setzen Sie es auf 1, nachdem Sie fertig sind.

37
Mihai

Ich stehe vor demselben Problem. Ich löse dieses Problem durch Löschen, d. H. Löschen aller Daten aus der untergeordneten Tabelle und erfolgreich durchgeführt. 

Dies ist der Fall, wenn die untergeordnete Tabelle Daten mit dem Fremdschlüssel enthält, die sich nicht in der übergeordneten Tabelle befinden, dh, wenn es zwei Tabellen mit dem Namen Person (mit Spalten-ID, Name, Adresse) und Reihenfolge (mit Spalten-ID, Personen-ID, Auftragsname); order.person_id ist der Fremdschlüssel von person.id und die Auftragstabelle enthält person_id, die in der Personentabelle nicht vorhanden ist. 

Sie können dies mit der folgenden Abfrage lösen

Delete from order where person_id NOT IN (select id from person where person.id = order.person_id)
13

Als ich dieses Problem hatte, lag es daran, dass ich beim Erstellen der Fremdschlüssel-ID-Felder vergessen hatte, NULL-Werte anzugeben. Ich habe es danach geändert, aber Nullen waren bereits im Wert. Es konnte keine 0 in der übereinstimmenden Tabelle finden und gab dann diesen Fehler aus. Der Fix: Aktualisieren Sie die Nullwerte auf Nullen.

6
Cymbals

Sie müssen für Ihre Tabellen von den übergeordneten in die untergeordneten Tabellen Nullen setzen oder dieselben Werte festlegen, z. B. Untergeordnete Tabelle zuerst nam = Derick Name der übergeordneten Tabelle = Derick

0
derick