CREATE TABLE IF NOT EXISTS `kategorie` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nazwa` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `opis` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `podkategorie` char(3) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'NIE', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `podkategorie` ( `id` int(11) DEFAULT NULL AUTO_INCREMENT, `nazwa` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `opis` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `kategoria` int(11) DEFAULT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`kategoria`) REFERENCES kategorie(`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; CREATE TABLE IF NOT EXISTS `produkty` ( `id` int(11) DEFAULT NULL AUTO_INCREMENT, `kategoria` int(11) DEFAULT NULL, `podkategoria` int(11) DEFAULT NULL, `nazwa` varchar(100) NOT NULL, `typ` varchar(30) NOT NULL DEFAULT 'Inne', PRIMARY KEY (`id`), FOREIGN KEY (`kategoria`) REFERENCES kategorie(`id`) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (`podkategoria`) REFERENCES podkategorie(`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Podczas dodawania rekordu do bazy danych przes skrypt PHP podając prawidłowe parametry klucza obcego wyskakuje błąd:
Errormessage: Cannot add or update a child row: a foreign key constraint fails (`www`.`produkty`, CONSTRAINT `produkty_ibfk_1` FOREIGN KEY (`kategoria`) REFERENCES `kategorie` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
Podkategoria i kategoria są na 100% dobre bo sprawdzałem ręcznie i w dodatku czytam je z bazy skryptem...
Da się to jakoś naprawić ?