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

PHP i MySQL
1 080 wizyt
7 września 2010, 09:02
1 Komentarz

Tagi:

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ć :)



  • TomaszBzymek

    Też mam ten problem i jakoś to rozwiązanie nie podchodzi. Mam dwie bazy z danymi np. rzeczoną tabelę książki, kategorie i księgarnie. do kategorii dodamy księgarnie_id gdzie można znaleźć odpowiedni gatunek i mimo, że wszystkie bazy są uzupełnione i książki udało się powiązać do ksiazki_id to przy księgarniach ten błąd znów się pojawia… Jeszcze pokombinuje, ale jeżeli ktoś miał taki problem to proszę o radę.