Search code examples
mysqlsqlforeign-keysconstraintsparent

MySQL: Cannot delete or update a parent row: a foreign key constraint fails


Hi i am trying to make simple database with 2 tables, first for user information, and second for their uploads, because it's project for faculty, i have some assignments... And one is to use foreign key.

DROP TABLE IF EXISTS `korisnici`;

CREATE TABLE `korisnici` (
  `UserID` INT(11) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(12) NOT NULL,
  `password` VARCHAR(32) NOT NULL,
  `email` VARCHAR(32) NOT NULL,
  `telefon` VARCHAR(16) NOT NULL,
  PRIMARY KEY (`UserID`)
);

DROP TABLE IF EXISTS `slike`;

CREATE TABLE `slike` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(200) NOT NULL,
  `size` INTEGER(11) NOT NULL,
  `type` VARCHAR(200) NULL,
  `file_path` VARCHAR(200) NOT NULL,
  `username` VARCHAR(12) NOT NULL,
  `naslov` VARCHAR(32) NOT NULL,
  `adresa` VARCHAR(80) NOT NULL,
  `opis` VARCHAR(1200) NOT NULL,
  `datum` DATE NOT NULL,
  `UserID` INTEGER(11) NOT NULL,
  PRIMARY KEY (`id`)
);

ALTER TABLE `slike` ADD FOREIGN KEY (UserID) REFERENCES `korisnici` (`UserID`);


-- ALTER TABLE `korisnici` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- ALTER TABLE `slike` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;



-- ---
-- Test Data
-- ---

INSERT INTO `korisnici` (`UserID`,`username`,`password`,`email`,`telefon`) VALUES('1','dd','d','d','d');
INSERT INTO `slike` (`id`,`name`,`size`,`type`,`file_path`,`username`,`naslov`,`adresa`,`opis`,`datum`,`UserID`) VALUES('2','a','122','png','ksks/sss','dsss','aaaa','sss','ssss','2014/09/04','2');

ERROR:

ERROR 1217 (23000) at line 14: Cannot delete or update a parent row: a foreign key constraint fails

Anybody now where is the probel and how could i fix it? It also doesn't work on sqlfiddle when i insert some values for testing. Thanks :)


Solution

  • I think the error message is actually misleading. What I see from your code is that it is the insert into SLIKE that fails because UserID=2 does not match the UserID of the previous insert into KORISNICI.