Cannot add or update a child row - czyli jaki jest problem? | DailyWeb.pl - codziennie o sieci

Cannot add or update a child row - czyli jaki jest problem?

Opublikowano 7 lat temu - 1


Zadaniem na dziś było zaktualizowanie tabelki pod jeden ze skryptów użytkowych, który jest w trakcie przygotowania. Moim zadaniem było utworzenie nowej tabelki a następnie stworzenie relacji z nowoutworzonej tabelki do jednej z istniejących. Niestety phpMyAdmin uporczywie wykrzykiwał błąd, z którym niestety nie miałem pomysłu jak sobie poradzić. Jak się później okazało rozwiązanie było możliwie najbardziej banalne (...czytaj więcej)

A oto kod błędu:

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

Chodziło o utworzenie klucza obcego w jednej z tabelek. Całość operacji chciałem przeprowadzić za pomocą phpMyAdmin. Po wielu próbach i przeczytaniu wielu obszernych for, ktoś podsunał pomysł.
Przykład?

Tabelka ksiazki

id_ksiazki | ksiazka_autor | tytul
---------------------------
1 | Stephen King | Lśnienie

Tabelka kategorie

id_kategorii | ksiazki.id_ksiazki | kategoria
----------------------------------------
1 | 1 | Horrory

Zanim utworzymy klucz obcy w tabelce kategoria musi się znajdować pole które będziemy powiązywać - w naszym wypadku ksiazki._id_ksiazki. Następnie dodajemy przykładowy rekord do tabelki kategorie, gdzie wpisujemy w pole ksiazki.id_ksiazki wartość prawidłową znajdująca się w tabelce ksiazki.
Dopiero po dodaniu tego wpisu, phpMyAdmin pozwoli nam na utworzenie klucza obcego a irytujący błąd

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

przestanie się pojawiać :)