SQL - nejde nastavit foreign key - Cannot add or update a child row

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

SQL - nejde nastavit foreign key -…

09.11.2017 napsal TepOk1M

Vyřešeno
Dobrý den,

nejde mi nastavit foreign key (cizí klíč) u existující MySQL tabulky InnoDB. Vazba je material.box_id na box.id. Dělám to takto a nejde to s chybou:

ALTER TABLE material ADD FOREIGN KEY (box_id) REFERENCES box(id);


Error

SQL query:

ALTER TABLE material
ADD FOREIGN KEY (box_id) REFERENCES box(id)


MySQL said: Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (`db`.`#sql-724_74c`, CONSTRAINT `#sql-724_74c_ibfk_1` FOREIGN KEY (`box_id`) REFERENCES `box` (`id`))


Také se mně tam objevila i tahle chyba, když jsem dělal nějaké další pokusy:
1005 - Can't create table 'material ' (errno: 150)

Zobrazit odpovědi

Nejlépe hodnocení uživatelé
Hanz

Počet UP: 5096

React: 215

Rusty

Počet UP: 2354

React: 100

OL3G

Počet UP: 1638

React: 60

Strosmajer

Počet UP: 496

React: 23

SYSTEM

Počet UP: 440

React: 23

Oxytocin

Počet UP: 298

React: 18

Hyacint

Počet UP: 40

React: 12

RE: SQL - nejde nastavit foreign…

30.11.2017 odpověděl OL3G

Zkontrolováno

Dobrý den,

u existujících SQL tabulek, které již mají vazbu nastavenou se nastavuje cizí klíč (foreign key) tak, že se alteruje podtabulka (zde material) a sloupec s vazbou (box_id) se nastaví jako cizí klíč na tabulku box a sloupec id, čili to máte dobře. Zkuste vypnout foreign key checks:


SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE material
ADD FOREIGN KEY (box_id) REFERENCES box(id);
SET FOREIGN_KEY_CHECKS=1;

Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace