Cannot add or update a child row: a foreign key constraint fails

  • Ersteller Ersteller alnew
  • Erstellt am Erstellt am
A

alnew

Guest
Hallo Leute,
ich sitze gerade an einer Datenbank Hausarbeit und habe die im Titel genannte Fehler Meldung. Ich habe mittlerweile bereits alle Beiträge dazu gelesen und ich dachte auch verstanden. Allerdings finde ich meinen eigenen Fehler nicht. Vielleicht auch vom zu langen drauf starren. Kann zufällig jemand helfen?

ERROR:
Error occurred during SQL script execution

Ursache:
SQL-Fehler [1452] [23000]: Cannot add or update a child row: a foreign key constraint fails (`ds140neal1020`.`Reperatur`, CONSTRAINT `Reperatur_ibfk_1` FOREIGN KEY (`MaschineID`) REFERENCES `Maschine` (`MaschineID`))

TABELLEN
-- Tabelle Maschine
CREATE table Maschine (
MaschineID int primary key,
Anschaffungsdatum date,
TypID int not null,
foreign key (TypID) references MaschineTyp (TypID)
);

-- Tabelle ReparaturTyp
CREATE table ReparaturTyp (
ReparaturTypID int primary key,
Bezeichnung VARCHAR(50)
);

-- N:M Beziehung
CREATE table Reparatur (
MaschineID int,
ReparaturTypID int,
foreign key (MaschineID) references Maschine (MaschineID) ,
foreign key (ReparaturTypID) references ReparaturTyp (ReparaturTypID),
Zeitstempel timestamp,
Kosten decimal(10,2),
primary key (MaschineID, ReparaturTypID, Zeitstempel, Kosten)
);


WERTE:

INSERT INTO Maschine (MaschineID, Anschaffungsdatum, TypID) VALUES
(1, "10.01.22", 1)
,(2, "15.03.22", 3)
,(3, "19.05.22", 2)
,(4, "19.05.22", 2)
,(5, "19.05.22", 4)
,(6, "24.08.22", 2)
;

INSERT INTO ReparaturTyp (ReparaturTypID, Bezeichnung) VALUES
(1, "Ölwechsel")
,(2, "Regelmäßige Wartung")
,(3, "Lagerschaden")
,(4, "Sonstige Reperaturen")
;


INSERT INTO Reparatur (MaschineID, ReparaturTypID, Zeitstempel, Kosten) VALUES
(1, 1, "18.01.22 14:50", 150),
(1, 2, "24.01.22 18:02", 320),
(1, 2, "31.08.22 19:04", 340),
(1, 4, "22.10.22 12:37", 6300),
(3, 1, "25.07.22 9:02", 140),
(3, 1, "30.10.22 19:40", 200),
(5, 1, "31.05.22 13:20", 220),
(6, 3, "19.11.22 14:52", 600),
(6, 3, "10.12.22 12:30", 650)
;
 
Werbung:
Bei mir läuft das. Bis auf den FK auf Maschinentyp.
Du verwendest also andere Tabellen, Daten oder was auch immer.
Vielleicht hast Du zuvor bei anderen Übungen einige der Daten gelöscht?
 
Es gibt noch ein paar mehr Tabellen in der Datenbank, allerdings scheint sich bei mir das Problem auf die Reparatur Tabelle zu beschränken. Da beim weiter arbeiten all die Werte der Reparatur Tabelle nicht gezogen werden.
Daten dürften eigentlich keine gelöscht worden sein, da ich sämtliche Inhalte zusammenhängend geschrieben habe.
Vielen Dank, für die Antwort :)
 
SQL-Fehler [1452] [23000]: Cannot add or update a child row: a foreign key constraint fails (`ds140neal1020`.`Reperatur`, CONSTRAINT `Reperatur_ibfk_1` FOREIGN KEY (`MaschineID`) REFERENCES `Maschine` (`MaschineID`))
Da wird auf eine Tabelle »Reperatur« verwiesen - eine solche gibt es bei dir aber garnicht, die heißt »Reparatur« …

CREATE table Maschine (
[…]
Anschaffungsdatum date,
[…]
);

CREATE table Reparatur (
[…]
Zeitstempel timestamp,
[…]
);

WERTE:

INSERT INTO Maschine (MaschineID, Anschaffungsdatum, TypID) VALUES
(1, "10.01.22", 1)
[…]

INSERT INTO Reparatur (MaschineID, ReparaturTypID, Zeitstempel, Kosten) VALUES
(1, 1, "18.01.22 14:50", 150),
[…]
Die Werte für Anschaffungsdatum und Zeitstempel passen nicht zu den angegebenen Spaltentypen - die Daten lassen sich zwar importieren, das was dann in der Datenbank steht ist aber nicht das was vermutlich gemeint ist.
 
CREATE table Reparatur (
MaschineID int,
ReparaturTypID int,
foreign key (MaschineID) references Maschine (MaschineID) ,
foreign key (ReparaturTypID) references ReparaturTyp (ReparaturTypID),
Zeitstempel timestamp,
Kosten decimal(10,2),
primary key (MaschineID, ReparaturTypID, Zeitstempel, Kosten)
);
warum PK über all diese Spalten?
 
Werbung:
Zurück
Oben