SQL - nejde nastavit foreign key - Cannot add or update a child row
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:
Také se mně tam objevila i tahle chyba, když jsem dělal nějaké další pokusy:
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:
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)
ODPOVĚĎ
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;