phpmyadmin tworzenie kluczy obcych?

Odpowiedz Nowy wątek
2015-06-13 13:00

Rejestracja: 8 lat temu

Ostatnio: 1 rok temu

0

Witam. Mam problem z utworzeniem kluczy obcych i powiązaniem ich z innymi tabelkami. Mam 3 tabelki (samochod, silnik oraz typ) w 1 utworzyłem 2 kolumny o nazwach id_silnik i id_typ by połączyć je z kluczami podstawowymi tabel: silnik oraz typ, jednak podczas próby pojawiają się błędy:

Zapytanie SQL:

ALTER TABLE `samochód` ADD  CONSTRAINT `id_silnik` FOREIGN KEY (`id_silnik`) REFERENCES `s84052_test`.`silnik`(`ID_Silnika`) ON DELETE RESTRICT ON UPDATE RESTRICT;

MySQL zwrócił komunikat: Dokumentacja
#1452 - Cannot add or update a child row: a foreign key constraint fails (`s84052_test`.`#sql-628_31ac0`, CONSTRAINT `id_silnik` FOREIGN KEY (`id_silnik`) REFERENCES `silnik` (`ID_Silnika`)) 

oraz

Zapytanie SQL:

ALTER TABLE `samochód` ADD  CONSTRAINT `id_typ` FOREIGN KEY (`id_typ`) REFERENCES `s84052_test`.`typ`(`ID_Typ`) ON DELETE RESTRICT ON UPDATE RESTRICT;

MySQL zwrócił komunikat: Dokumentacja
#1452 - Cannot add or update a child row: a foreign key constraint fails (`s84052_test`.`#sql-628_31ac0`, CONSTRAINT `id_typ` FOREIGN KEY (`id_typ`) REFERENCES `typ` (`ID_Typ`)) 

Robię to wszystko w phpmyadmin. Proszę o pomoc.

Pozostało 580 znaków

2015-06-13 13:32

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

Lokalizacja: Warszawa

0

Wg mnie błąd leży w tym że modyfikując te tabele - baza danych chce od razu odnieść się do kluczy obcych, które w obecnych rekordach nie istnieją. Zrób tak
Wyczyść całkowicie wszystkie tabele z danych. Usuń klucze obce o ile już jakieś są.
Uzupełnij przykładowe dane. W tabeli z samochód - wpisz z "palca" id typ i id silnika. Potem załóż klucze obce. Zamiast PMA polecam sprytny programik HeidiSql - mało waży, a do prostych rzeczy się nadaje idealnie.
Aaa zamiast powyższego rozwiązania - możesz ustawić "allow null" - to chyba nawet prostsze będzie :)

btw. zlituj się i nie stosuj polskich nazw w tabelach/kolumnach..... w całym programowaniu.

edytowany 1x, ostatnio: axelbest, 2015-06-13 13:33

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0